如何收集无限数量的RadioButton项目的数据?

时间:2010-11-14 15:27:15

标签: asp.net-mvc razor

@{int i=0;}
@foreach (var e in Model.BlockList)
{ 
  @foreach (var e2 in e.RadioButtons)
  {
    <label>@Html.RadioButton("r"+i, e2.Id, false) @e2.ViewText</label><br />
  }
  i++;
}

问题:控制器如何通过所有答案?

此时我的Controller类看起来像这样:

[HttpPost]
public ActionResult Index(DocAlpha a)
{
   List<int> results = new List<int>();
   int i = 0;

   while (Request.Params["r" + i.ToString()] != null)
   {
      int val = 0;

      if(int.TryParse(Request.Params.Get("r" + i.ToString()), out val))
      {
         results.Add(val);
      }
      i++;
   }

   return Index();
}

可能是更好的方法吗?

1 个答案:

答案 0 :(得分:3)

你可以创建一个像这样的单选按钮名称数组(注意名称):

Html : 
<input type="text" name="r[0]" value="" />
<input type="text" name="r[1]" value="" />
<input type="text" name="r[2]" value="" />
<!--and so on -->

然后让你的动作接受一个数组:

public ActionResult TheAction (string[] r) {

}

默认模型绑定器将使用在表单中输入的值自动填充操作中的answers数组。