Это вообще возможно? Может быть, я глуп, но я не могу применить ни один из ответов здесь или где-либо еще к моей конкретной ситуации.
Что я хочу сделать, так это передать строго типизированную модель викторины на мой взгляд. Викторина имеет коллекции вопросов. Вопрос имеет набор возможных ответов.
Вопросы выглядят так:
- Вопрос.Текст
- Вопрос.Id
- Вопрос. Возможные ответы
Возможные ответы выглядят так:
- Возможныйответ.Id
- Возможный ответ. Значение
- Возможныйответ.Ярлык
- Возможныйответ.Выбрано
Я хочу передать викторину в представление, представление должно настроить форму, в которой каждый вопрос имеет radiobuttonlist(group)
возможных ответов.
Текст вопроса 1 бла-бла-бла:
<input id="1_1" type="radio" name="question1" value="1" />
<input id="1_2" type="radio" name="question1" value="2" />
<input id="1_3" type="radio" name="question1" value="3" />
Теперь меня не волнует именно формат идентификаторов переключателей в группе ... очевидно, что MVC должен заботиться ... поэтому, как бы я ни работал, я хочу это сделать. Но я ожидаю, что когда я отправлю форму в действие, я смогу просмотреть Вопросы и получить возможный ответ в каждой коллекции возможных ответов Вопроса с .isAnswer, помеченным как true:
foreach(var item in model.Questions)
{
foreach(var aitem in item.PossibleAnswers)
{
if(aitem.Selected)
//do some stuff
}
}
так что я не понимаю.. это:
@foreach (var item in Model.Questions)
{
@foreach (var jitem in item.PossibleAnswers)
{
@Html.RadioButtonFor(x => item.QuestionId, jitem.Value)
}
}
даже не близко .. может кто-нибудь объяснить, что я делаю неправильно? Моя модель неверна? Может ли MVC сделать это? Нужно ли мне изменить тип модели PossibleAnswer на RadioButtonListItems или что-то в этом роде? помощь!
------------------------------------ ** ОБНОВИТЬ ** --------- -------
@for (int i = 0; i < Model.Questions.Count(); i++)
{
<p>@Model.Questions.ElementAt(i).QuestionText</p>
@Html.RadioButtonListFor(m => m.Questions.ElementAt(i).AnswerRadios,
"Question" + i);
}
Этот код, кажется, работает! По крайней мере, он выводит некоторые радиокнопки.. НО он выводит html как специальные объекты..
<td id="Question0_Container">
<input id="Question0_1" name="Question0_value" type="radio" value="17" />
<label for="Question0_1">1</label>
<input id="Question0_2" name="Question0_value" type="radio" value="18" />
<label for="Question0_2">2</label>
<input id="Question0_3" name="Question0_value" type="radio" value="19" />
<label for="Question0_3">3</label>
<input id="Question0_4" name="Question0_value" type="radio" value="20" />
<label for="Question0_4">4</label>
<input id="Question0_5" name="Question0_value" type="radio" value="21" />
<label for="Question0_5">5</label>
</td>