复选框选中的值未按预期设置

时间:2012-11-16 08:36:16

标签: razor asp.net-mvc-4 html-helper html.checkbox

  

可能重复:
  ASP.NET MVC:Why does the CheckBoxFor render an additional input tag and how can I get the value using the FormCollection

我需要创建一个复选框并将模型绑定到复选框。假设代替模型值我只是将false指定为值。代码如下。

 @Html.CheckBox("abcd",false)

输出:

<input id="abcd" name="abcd" type="checkbox" value="true" />
<input name="abcd" type="hidden" value="false" />

生成的HTML的输出如上所示。我明白为什么隐藏的复选框是由剃刀视图引擎放置的。我的问题是,如果值为false,则可见的复选框应为value="false"(未选中)。

为何放置value="true"(已选中)。同样适用于helper复选框。有什么问题或者你能解释一下如何实现这个吗?

2 个答案:

答案 0 :(得分:3)

您应该考虑通过模型传递值:

@Html.CheckBoxFor(model => model.abcd)

如果需要将其设置为“false”,则可以在返回View之前通过在Controller中将abcd属性设置为false来执行此操作。

答案 1 :(得分:2)

复选框没有不同的已选中/未选中的值,它们只有一个选中的值。如果你理解为什么剃刀会输出隐藏的字段,那么你就明白了。

想象一下value='false'。选中复选框后会发生什么?您是否期望价值发生变化? (提示:你不应该)。您已选中value='false'复选框。那有什么意思?然后,在发布时,您会发布false作为您的价值,这将是无稽之谈。

因此。复选框值属性不会更改。如果您需要编写使用该值的代码,请不要查找其值,查看是否已选中它。