强类型RadioButtonList MVC 3

时间:2011-06-22 14:37:14

标签: asp.net-mvc-3 radiobuttonlist strong-typing

这甚至可能吗?也许我很愚蠢,但我不能在这里或其他地方应用任何答案来解决我的具体情况。

我想要做的是将强类型的测验模型传递给我的视图。测验有一系列问题。问题有一系列可能的问题。

问题如下:

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

PossibleAnswers看起来像:

  • PossibleAnswer.Id
  • PossibleAnswer.Value
  • PossibleAnswer.Label
  • PossibleAnswer.Selected

我想将测验传递给视图,视图应该设置每个问题都有radiobuttonlist(group) PossibleAnswers的表单。

问题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" />

现在我并不完全关心组中单选按钮的id的格式..显然MVC必须关心..所以无论如何工作我都想这样做。但是我希望当我将表格提交给行动时,我应该能够循环通过问题,并在每个问题的可能答案中获得可能的答案,并将.isAnswer标记为真:

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);        
}

此代码似乎有效!至少它会输出一些radiobuttons ..但它输出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 :(得分:0)

Here就是我用的。我做了一些小修改,但效果很好。