剃刀视图引擎HTML.Checkbox方法创建一个隐藏的输入。 为什么? [重复] 剃刀视图引

2019-05-12 04:25发布

这个问题已经在这里有一个答案:

  • asp.net MVC:为什么Html.CheckBox产生附加隐藏输入 9个答案

我已经写了我的视图页上的下面的代码;

@Html.CheckBox("ChxName",true)

而我得到了以下的结果;

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

为什么会有命名为与复选框相同的一个输入元素?

Answer 1:

未选中复选框不贴了,所以隐藏字段(设置为FALSE)允许模型结合仍然可以工作。

在后看看的Request.Form回来。 如果复选框被选中,您将看到:

ChxName=true&ChxName=false

模型绑定使用的第一个值。

并且,如果未选中该复选框,你会看到:

ChxName=false


Answer 2:

ericvg解释得很好。

手动的方法是这样的:

bool IsDefault = (Request.Form["IsDefault"] != "false");


Answer 3:

或使用包含(“真”),我觉得这有点整洁...

bool myCheckBoxValue = Server.HtmlEncode(Request.QueryString["MyCheckBoxValue"]).Contains("true");


文章来源: Razor ViewEngine HTML.Checkbox method creates a hidden input. Why? [duplicate]