ASP.MVC绑定到List <int>失败</int>

时间:2014-06-05 05:47:51

标签: asp.net-mvc data-binding

我正在尝试将单选按钮的值绑定到List<int>。我可以看到该值在Fiddler中提交,但在Visual Studio中,List<int> data的值在MyAction中总是 null

查看

@using (Html.BeginForm("MyAction", "MyModel")) {
   @foreach (SomeClass s in Model) {
      for(x=1 ; x< 5; x++){
         @Html.RadioButton("data[" + s.ID + "]", x)}
      }
      <input type="submit" value="submit" />
   }
}

HTML

<input id="data_1_" name="data[1]" type="radio" value="1">
<input id="data_1_" name="data[1]" type="radio" value="2">
<input id="data_1_" name="data[1]" type="radio" value="3">
<input id="data_1_" name="data[1]" type="radio" value="4">
<input id="data_1_" name="data[1]" type="radio" value="5">
<input id="data_2_" name="data[2]" type="radio" value="1">
<input id="data_2_" name="data[2]" type="radio" value="2">
<input id="data_2_" name="data[2]" type="radio" value="3">
<input id="data_2_" name="data[2]" type="radio" value="4">
<input id="data_2_" name="data[2]" type="radio" value="5">

动作

[HttpPost]
public ActionResult MyAction(List<int> data) {
    return View();
}

1 个答案:

答案 0 :(得分:3)

  

索引必须从零开始且不间断。

关于发布对象集合的

Here is blog,但我确信同样的规则适用于基元集合

在同一个博客中,对于原始人的收集,你根本不需要索引。只需对所有人使用相同的名称

这是你问题的答案,但根据你的代码,你有不同的问题:

只要您使用单选按钮,就根本不需要收集。给他们相同的名字,并在行动中接受原语:

HTML:

<input id="data_1_" name="data" type="radio" value="1">
<input id="data_2_" name="data" type="radio" value="2">

动作:

[HttpPost]
public ActionResult MyAction(int data) {
    return View();
}