如果选中,则从复选框中获取 true 和 false
Both true and false got from checkbox if it is checked
在我的 MVC
视图中,我有一个 form
方法 GET
。在那种形式下,我有几个工作正常的领域。添加 checkbox
后,我发现了奇怪的行为。如果 checkbox
未选中,我在 GET
参数中有 myCheckbox=false
,但是当我检查 checkbox
时,我有 myCheckbox=true&myCheckbox=false
.
我的看法:
...
@using (Html.BeginForm("MyAction", "MyController", FormMethod.Get)) {
<fieldset>
SomeInput: @Html.TextBox("someInput") <br />
...
MyCheckbox: @Html.CheckBox("myCheckbox") <br />
</fieldset>
}
...
在 SomeInput
中使用值 data
并且未选中 checkbox
我得到 url:
...?someInput=data&myCheckbox=false
并勾选 checkbox
我得到:
...?someInput=data&myCheckbox=true&myCheckbox=false
这是正常行为。
标准 html 表单不发送复选框,除非它被选中。如果未选中该框,这将导致您的查询字符串中缺少参数。
html 助手为您请求的每个 input type=checkbox
生成一个 input type=hidden
(如果您花一点时间检查生成的 [=28,您会注意到这一点=]).这样做是为了确保该字段无论是否被选中都会被传递下去。所以在 "not checked" 场景中,实际的复选框被忽略,你只有隐藏字段的值:
myField=false
如果复选框被选中,两者都被传递下来,具有相同的名称:
myField=true&myField=false
如果我没记错的话,如果你在接收动作方法中声明了一个参数 bool myField
,默认的 ModelBinder 会处理这个特定的场景,并且会在复选框被选中时 true
和 [=16] =] 当它不是时。
在我的 MVC
视图中,我有一个 form
方法 GET
。在那种形式下,我有几个工作正常的领域。添加 checkbox
后,我发现了奇怪的行为。如果 checkbox
未选中,我在 GET
参数中有 myCheckbox=false
,但是当我检查 checkbox
时,我有 myCheckbox=true&myCheckbox=false
.
我的看法:
...
@using (Html.BeginForm("MyAction", "MyController", FormMethod.Get)) {
<fieldset>
SomeInput: @Html.TextBox("someInput") <br />
...
MyCheckbox: @Html.CheckBox("myCheckbox") <br />
</fieldset>
}
...
在 SomeInput
中使用值 data
并且未选中 checkbox
我得到 url:
...?someInput=data&myCheckbox=false
并勾选 checkbox
我得到:
...?someInput=data&myCheckbox=true&myCheckbox=false
这是正常行为。
标准 html 表单不发送复选框,除非它被选中。如果未选中该框,这将导致您的查询字符串中缺少参数。
html 助手为您请求的每个 input type=checkbox
生成一个 input type=hidden
(如果您花一点时间检查生成的 [=28,您会注意到这一点=]).这样做是为了确保该字段无论是否被选中都会被传递下去。所以在 "not checked" 场景中,实际的复选框被忽略,你只有隐藏字段的值:
myField=false
如果复选框被选中,两者都被传递下来,具有相同的名称:
myField=true&myField=false
如果我没记错的话,如果你在接收动作方法中声明了一个参数 bool myField
,默认的 ModelBinder 会处理这个特定的场景,并且会在复选框被选中时 true
和 [=16] =] 当它不是时。