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">
我不明白它是怎么工作的?如何将复选框布尔值传递给我的模型?谢谢
如果控件呈现时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