Vik*_*kas 9 checkbox asp.net-mvc
我见过很多与这个话题有关的问题.
我正在使用asp.net MVC 1.0
问题领域
如果我使用
<%= Html.CheckBox("Status", true) %>
Run Code Online (Sandbox Code Playgroud)
然后为什么它呈现像
<input checked="checked" id="Status" name="Status" type="checkbox" value="true" /><input name="Status" type="hidden" value="false" />
Run Code Online (Sandbox Code Playgroud)
我把它放在foreach循环中,我有5行.
当我提交真实,真实,真实,虚假,虚假的形式时,
我得到true,false,true,false,true,false,false,false
即对于false => false.
for true => true,false
如果我使用
<input type="checkbox" value="true" name="Status" checked="checked" />
Run Code Online (Sandbox Code Playgroud)
然后,我不会不受控制.
那么我该如何克服这个问题呢?
请不要在formcollection对象中使用循环发布答案并检查每个键!
之所以如此呈现,是因为默认绑定器要求 FormCollection 具有不可为空参数的值。使用这种技术,我们可以确保即使未选中该复选框,该值也会被发送(默认情况下,仅在选中该复选框时才发送该值)。如果您使用此控制器方法仅使用一个 html 输入,您将在未选中复选框的表单发布中收到错误(复选框的值将不会被发布,并且活页夹将不知道 isItemSelected 的值使用什么):
public ActionResult SomeActionMethod(bool isItemSelected)
Run Code Online (Sandbox Code Playgroud)
您可以尝试仅使用一个 html 输入来使用类似的内容:
public ActionResult SomeActionMethod(bool? isItemSelected)
Run Code Online (Sandbox Code Playgroud)
但在这种情况下 isItemSelected 将为 null 或为 true。而且它永远不会变得虚假。
归档时间: |
|
查看次数: |
16675 次 |
最近记录: |