checkboxfor&;asp.net mvc c#中的模型

本文关键字:模型 mvc net amp asp checkboxfor | 更新日期: 2023-09-27 17:58:17

我有一个模型

 public int Id { get; set; }
 public string Name { get; set; }
 public string Phone { get; set; }
 public bool IsChecked { get; set; }

我想在我的视图中使用checkbox

 @Html.CheckBoxFor(model => model.IsChecked, new{@checked="checked"})

我的复选框未选中,视图呈现额外的输入

 <input name="IsChecked" type="hidden" value="false">

我不明白它是怎么工作的?如何将复选框布尔值传递给我的模型?谢谢

checkboxfor&;asp.net mvc c#中的模型

如果控件呈现时model.IsChecked为true,则复选框将按选中状态启动。

所以只需写:

@Html.CheckBoxFor(m => m.IsChecked)

helper方法生成的隐藏字段总是false,以确保在表单发布时提交正确的名称/值,即使用户没有选中复选框,因为html表单只包括选中的复选框。

如果复选框被选中,则其属性将优先于隐藏字段,因为它位于隐藏字段之前。

C#.NET MVC在CheckBoxFor()命令方面存在一些问题。CheckBoxFor()自动生成一个具有相同名称的隐藏字段&如果它本身没有在[Div]中隔离,它会偶尔丢弃去往服务器的检查。即使在[displayfield]div中包含标题或验证,也可能导致CheckBoxFor[()出现问题。解决方法是隔离CheckBoxFor[()或添加[onchange]update&它似乎更稳定地工作。

<div class="display-field">
    @Html.CheckBoxFor(m => Model.IsChecked, 
     new { onchange = "this.value = this.checked;"})
</div>

服务器端现在应该自动将true-false捕获到具有相同名称的bool模型中。

public bool IsChecked { get; set; }

目前在VS 2017 PRO 上使用MVC 4.x