如何将数据模型绑定到多组单选按钮?

时间:2014-11-27 23:51:48

标签: asp.net asp.net-mvc razor

我需要向用户呈现是/否类型问题的列表。这是我的模特:

 class QuestionModel {
    public String ID {get; set;}
    public String Title {get; set; }
    public bool Value {get; set; }
 }

 class QuestionsModel {
    List<QuestionModel> Questions {get; set}
 }

在我的Razor代码中,我可以做类似的事情:

 @foreach(var item in Model.Questions) {
       @Html.Label(item.Title);
       @Html.RadioButton(item.ID, "Yes");
       @Html.RadioButton(item.ID, "No");
  }

但是,我没有看到QuestionModel中的Value字段将如何根据用户选择的内容进行填充。请帮忙。问候。

1 个答案:

答案 0 :(得分:1)

首先,您需要使用for循环或EditorTemplate来生成集合,否则控件将无法正确命名且无法在回发后绑定

@model QuestionsModel
@(using Html.BeginForm())
{
  for (int i = 0; i < Model.Questions.Count; i++)
  {
    string yes = i + "Yes"; 
    string no = i + "No";
    @Html.HiddenFor(m => m.Questions[i].ID)
    @Html.DisplayFor(m => m.Questions[i].Title) // assuming you don't want to edit this
    @Html.RadioButtonFor(m => m.Questions[i].Value, true, new { id = @yes })
    <label for="@yes">Yes</label>
    @Html.RadioButtonFor(m => m.Questions[i].Value, false, new { id = @no })
    <label for="@no">No</label>
  }
  <input type="submit" value="Save" />
}