我试图按照this,但默认的modelbinder让我的数组在服务器端为null。在ASP.NET MVC中使用HTML单选按钮阵列
HTML:
Question 1:
<input name="list[0]" type="radio" value="1000" />No
<input name="list[0]" type="radio" value="1001" />Yes
Question 2:
<input name="list[1]" type="radio" value="1002" />No
...
控制器动作:
public ActionResult Anamnesis(string[] list)
{
如果我只选择了第二个 “无”(列表[0]缺少),那么DefaultModelBinder是不可能将其改造成一个阵列。
Thanx提前!
更新#1
重新格式化基础上的评论,谢谢!
更新#2
只是一个因子评分:创建一个隐藏的输入毕竟列表项,并以这种方式它的工作原理。但毫无疑问,这很丑陋。
Question 1:
<input name="list[0]" type="radio" value="1000" />No
<input name="list[0]" type="radio" value="1001" />Yes
<input type="hidden" name="list[0]"/>
Question 2:
<input name="list[1]" type="radio" value="1002" />No
<input type="hidden" name="list[1]"/>
...
令它非常重要:隐藏的价值只提交当无线电处于未选中状态。这个想法来自ASP.NET MVC帮手。 (顺便说一下,我不能使用Html.RadioButton存档此行为。)
数组基于C#。将是一个开始。 – 2009-06-17 22:56:22
真的!如果我选择第一个元素,效果很好 - 但如果我选择其他选项(列表[2]),则会失败。看起来默认联编程序需要一个从零开始的数组。但是,这是不可能的单选按钮...我可以切换到jQuery创建请求。 – boj 2009-06-17 23:15:02
如果这些是单选按钮,即它们是互斥的(选择一个或另一个),那么你应该给它们相同的名称。否则,如果名称不同,它们将被视为单独的“集合”,并且可以将它们//都选中! (并且无法取消选择。) - Mike – Funka 2009-06-17 23:36:25