C# 在ASP.NET MVC中使用HTML单选按钮数组
我试图遵循,但默认的modelbinder允许我的数组在服务器端为null HTML: 如果我只选择缺少第二个No列表[0],则DefaultModelBinder无法将其转换为数组 先走一步 更新1 根据评论重新格式化,谢谢 更新2 只是一个提示:在所有列表项之后创建了一个隐藏的输入,并且以这种方式工作。但毫无疑问,这很难看C# 在ASP.NET MVC中使用HTML单选按钮数组,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我试图遵循,但默认的modelbinder允许我的数组在服务器端为null HTML: 如果我只选择缺少第二个No列表[0],则DefaultModelBinder无法将其转换为数组 先走一步 更新1 根据评论重新格式化,谢谢 更新2 只是一个提示:在所有列表项之后创建了一个隐藏的输入,并且以这种方式工作。但毫无疑问,这很难看 Question 1: <input name="list[0]" type="radio" value="1000" />No <input name
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.NETMVC助手。顺便说一句,我不能使用Html.RadioButton来存档此行为。单选按钮的名称属性应该是list,而不是list[n]。您的更新2似乎解决了您的问题。您的更新2也很有趣,因为您也可以使用这种方法来提供默认值,例如999,以便在未检查任何内容时使用 也许还有另一种类似的方法来满足您的要求,它基于并且也使用隐藏的输入。这样做的目的是,您可以为每台收音机创建索引,以避免表单中先前缺少的选择导致删除所有后续选择的情况:
Question 1:
<input name="list.Index" type="hidden" value="0" />
<input name="list[0]" type="radio" value="1000" />No
<input name="list[0]" type="radio" value="1001" />Yes
Question 2:
<input name="list.Index" type="hidden" value="1" />
<input name="list[1]" type="radio" value="1000" />No
<input name="list[1]" type="radio" value="1001" />Yes
我建议这样做的原因是,您可能希望通过唯一ID将您的答案与特定问题关联,而不是仅使用0、1、2等。我链接的文章将展示如何执行此操作的示例
祝你好运!
-Mike数组在C中是零基的。这将是一个开始。真的!如果我选择第一个元素,效果非常好,但是如果我选择其他选项列表[2],它将失败。似乎默认绑定器需要一个从零开始的数组。但是单选按钮是不可能的…我可以切换到jQuery来创建请求吗?如果这些是单选按钮,即它们相互排斥,请选择其中一个,然后您应该给它们相同的名称。否则,如果名称不同,它们将被视为单独的集合,并且可以将它们//都//选中!没有办法取消选择MikeThanks,我来纠正我的例子。这是一个问题的可能答案列表。第一个问题的答案是列表[0],第二个问题的答案列表[1]等等。如果我只写列表而不是索引,用户可以每页选择一个答案。更干净的解决方案,然后是我的,thanx!
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]"/>
...
Question 1:
<input name="list.Index" type="hidden" value="0" />
<input name="list[0]" type="radio" value="1000" />No
<input name="list[0]" type="radio" value="1001" />Yes
Question 2:
<input name="list.Index" type="hidden" value="1" />
<input name="list[1]" type="radio" value="1000" />No
<input name="list[1]" type="radio" value="1001" />Yes