Сильно Тип RadioButtonList MVC 3 - PullRequest
1 голос
/ 22 июня 2011

Возможно ли это вообще?Может быть, я глуп, но я не могу применить ни один из ответов здесь или в другом месте к моей конкретной ситуации.

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

Вопросы выглядят так:

  • Question.Text
  • Question.Id
  • Question.PossibleAnswers

Возможные ответы выглядят следующим образом:

  • Возможный ответ.Ид.
  • Возможный ответ. Значение
  • Возможный ответ. Метка
  • Возможный ответ. Выбранный

Я хочу передать Викторину представлению, представление должно настроить форму, в которой каждый Вопрос имеет 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 сделать это?Нужно ли мне изменить тип модели возможного ответа на 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>

1 Ответ

0 голосов
/ 22 июня 2011

Здесь - это то, что я использую.Я сделал несколько небольших изменений, но он прекрасно работает.

...