Я создаю приложение для опроса, для которого я создаю элементы управления динамически (например, флажок, радиокнопка, текстовое поле и т. Д.).Как проверить динамические элементы управления в ядре .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() { });
}
Итак, мой вопрос заключается в том, как я могу проверить динамически созданные элементы управления в этом сценарии?
@ Dawid Rutkowski Спасибо за редактирование. Любое решение по моей проблеме? – Rohit