Как манипулировать двумя разными моделями в одном представлении с помощью ASP.NET MVC? (Лайкерт Шкала Кейс)
Я пытаюсь создать шкалу Лайкерта. Для тех, кто может не знать этот термин, возможно, вы видели один из них раньше. Есть несколько вариантов выбора (7 в моем случае), которые показывают, насколько вы согласны или не согласны с данной идеей или ситуацией. Я работаю с ASP.NET MVC 5 и Entity Framework 6
Я использую радио-кнопки для моей части выбора опции.
Я не хочу показывать все свои 36 вопросов одновременно. Поэтому я отправляю 6 объектов вопросов для каждого запроса, 6 вопросов будут отображаться в представлении. Чтобы добиться этого, передается параметр id для достижения нумерации страниц, и вот как я отвечаю:
public ActionResult List(int id = 1)
{
int PageNo = 6 * (id - 1);
MyDBEntities ctx = new MyDBEntities();
IEnumerable<question> QuestionsToBeSent = new List<question>();
QuestionsToBeSent = from q in ctx.questions
where (q.QuestionNo > PageNo) &&
(q.QuestionNo <= (id* 6)) select q;
ViewBag.PageNo = id;
return View(QuestionsToBeSent);
}
и я могу правильно отобразить предложения вопросов в представлении. Проблема в том, что когда я хочу сохранить выбранные параметры для 6 отображаемых вопросов, я не могу получить доступ к модели ответов в представлении, поскольку я уже включил модель вопросов. Другая проблема заключается в том, что я отправляю свой запрос через Html.Actionlink(), а то, что я передаю, - это всего лишь число, чтобы продолжить нумерацию страниц.
@Html.ActionLink("Next Page", "List", "Question", new {id = ViewBag.PageNo+1},null)
Последняя из моих проблем связана с отправкой этого запроса и его содержанием. Я не могу собирать ответы с переключателей. Если бы я мог собрать, я полагаю, что могу отправить другой фрагмент данных в объекте типа ответа, а затем я могу написать перегрузку для моего действия List в QuestionController, который принимает дополнительный тип ответа. Если я могу понять, как получить ответы от переключателей и как управлять вторичной моделью в одном представлении, я думаю, я справлюсь с остальными. Я могу поймать и вставить ответы в метод перегрузки List().
Я создаю переключатели для вопросов следующим образом:
@foreach (var item in Model) {
<p class="lead">@Html.DisplayFor(modelItem => item.QuestionSentence)</p>
<label> I Agree </label>
<input type="radio" value=3 name="DontKnowWhattoName">
<input type="radio" value=2 name="DontKnowWhattoName">
<input type="radio" value=1 name="DontKnowWhattoName">
<input type="radio" value=0 name="DontKnowWhattoName">
<input type="radio" value=-1 name="DontKnowWhattoName">
<input type="radio" value=-2 name="DontKnowWhattoName">
<input type="radio" value=-3 name="DontKnowWhattoName">
<label> I Disagree </label>
}
Так как средства управления радио создаются динамически, и у меня есть 7 для каждого вопроса, я действительно обеспокоен тем, как определить выбранный, как назвать и получить доступ к нему, а затем как пропустить его к контроллеру?
Извините за такой длинный вопрос, но я действительно не мог разбить его на отдельные части, так как считаю, что все они довольно тесно переплетены.