Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC中使用HTML单选按钮数组_C#_Asp.net Mvc_Model View Controller - Fatal编程技术网

C# 在ASP.NET MVC中使用HTML单选按钮数组

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

我试图遵循,但默认的modelbinder允许我的数组在服务器端为null

HTML:

如果我只选择缺少第二个No列表[0],则DefaultModelBinder无法将其转换为数组

先走一步

更新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.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