@{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();
}
可能是更好的方法吗?
答案 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数组。