2017-01-31 5 views
0

Я создаю приложение для опроса, для которого я создаю элементы управления динамически (например, флажок, радиокнопка, текстовое поле и т. Д.).Как проверить динамические элементы управления в ядре .net

Каждый вопрос будет иметь элементы управления в зависимости от типа управления, назначенного на вопрос, и по типу вопроса будут отображены варианты ответа (флажок, переключатель).

В следующей/предыдущей навигации Я сохраняю ответы на текущую страницу в базе данных. Во время навигации по странице я делаю вызов ajax для сохранения базы данных, а мои пользовательские интерфейсы/элементы управления НЕ находятся в форме.

Я создал ViewModel на основе моих LMS_SurveyQuestions и LMS_SurveyQuestionOptionChoice.

Таким образом, создавая пользовательский интерфейс в цикле for, я непосредственно назначил SurveyQuestionOptionChoiceID в качестве идентификатора управления при создании элементов управления AnswerChoice и сохранил их в таблице SurveyUserAnswer.

Модель

public class LMS_TraineeSurveyPaginationViewModel 
{ 
    public List<LMS_SurveyQuestions> SurveyQuestions { get; set; } 
    public List<LMS_SurveyQuestionOptionChoice> SurveyQuestionOptionChoice { get; set; } 
    public SurveyPager Pager { get; set; } 
} 

и это, как я вынес мнение

@foreach (var item in Model.SurveyQuestions) 
{ 
    foreach (var data in Model.SurveyQuestionOptionChoice.Where(x => x.SurveyQuestionID == item.SurveyQuestionID).ToList()) 
    { 
     if (item.QuestionTypeID == QuestionType.RadioButton) 
     { 
      <li style="list-style:none;"> 
      <input type="radio" name="rb" id="@data.SurveyQuestionOptionChoiceID" /> 
      <span>@data.OptionChoice</span> 
      </li> 
     } 
     else if (item.QuestionTypeID == QuestionType.CheckBox) 
     { 
      <li style="list-style:none;"> 
      <input type="checkbox" id="@data.SurveyQuestionOptionChoiceID" name="@data.SurveyQuestionOptionChoiceID" " /> 
      <span>@data.OptionChoice</span> 
      </li> 
     } 
    } 
} 

и при сохранении ответа в базу данных я создал массив JSON/JS в качестве модели для SurveyUserAnswer и сохранить его в базы данных следующим образом. Ниже приведен пример для переключателя

function SaveValues() { 
    var surveyQuestion = @Html.Raw(Json.Serialize(Model.SurveyQuestions.ToArray())); 
    var surveyQuestionOptionChoide = @Html.Raw(Json.Serialize(Model.SurveyQuestionOptionChoice.ToArray())); 
    for (item in surveyQuestion) { 
     var surveyQuestionID=surveyQuestionViewModel[item].SurveyQuestionID; 
     var filteredData = surveyQuestionOptionChoide.filter(function(filteredItem) { 
      return (filteredItem.SurveyQuestionID==surveyQuestionID); 
     }); 
     for (optionChoice in filteredData) { 
      if(surveyQuestion[item].QuestionTypeID=='@QuestionType.RadioButton') { 
       if (($('#'+SurveyQuestionOptionChoiceID).prop("checked"))) { 
        surveyUserAnswer.push({ SurveyUserAnswerID: filteredData[optionChoice].SurveyUserAnswerID==null?0:filteredData[optionChoice].SurveyUserAnswerID, 
        SurveyQuestionOptionChoiceID: SurveyQuestionOptionChoiceID,SurveyUserID:'@ViewBag.SurveyUserID',AnswerText:null, 
        MarksObtained:filteredData[optionChoice].Marks,WhenCreated:'@DateTime.UtcNow',WhoCreated:'@tenant.UserID'}); 
       } 
      } 
     } 
    } 

    $.post('@Url.Action("GetTraineeSurvey", "Survey")', {SurveyID:surveyID,page:page, surveyUserAnswer: surveyUserAnswer,PrevBranchQuestionPage:currentPage,IsBranchQuestionAvailable:IsBranchQuestionAvailable }, function (data) { 
     $('#surveyModalContent').html(''); 
     $('#surveyModalContent').html(data); 
     $("#surveyModal").modal('show'); 
    }).fail(function() { 
     alert("error in GetTraineeSurvey"); 
    }).success(function() { }); 
} 

Итак, мой вопрос заключается в том, как я могу проверить динамически созданные элементы управления в этом сценарии?

+0

@ Dawid Rutkowski Спасибо за редактирование. Любое решение по моей проблеме? – Rohit

ответ

1

Вы можете использовать базовую проверку ненавязчивого jQuery для атрибутов данных на элементах управления. Подробнее об этом LINK.

+0

Да, но я не могу добавить обязательный атрибут свойства модели, поскольку иногда проверка не требуется. Поэтому, если требуется проверка, тогда он должен быть добавлен в элемент управления else, а не – Rohit

+0

. Вы можете добавить атрибут, требуемый данными, на свой динамически добавленный ввод, как описано в ссылке. –

+0

Нет, это не работает! Мои элементы управления на загрузочном модуле, это проблема? – Rohit