我有一个模特
public int Id { get; set; }
public string Name { get; set; }
public string Phone { get; set; }
public bool IsChecked { get; set; }
我想在我的视图中使用checkboxfor
@Html.CheckBoxFor(model => model.IsChecked, new{@checked="checked"})
我的复选框未选中,视图会显示其他输入
<input name="IsChecked" type="hidden" value="false">
我不明白它是如何运作的?我如何将复选框bool值传递给我的模型?感谢。
答案 0 :(得分:3)
如果在呈现控件时model.IsChecked
为真,则复选框将以选中状态开始。
所以写一下:
@Html.CheckBoxFor(m => m.IsChecked)
隐藏字段始终由辅助方法生成,以确保在表单发布时提交了有效的名称/值,即使复选框没有被用户隐藏,因为html表单只包含选中的复选框。
如果选中了复选框,则其属性将优先于隐藏字段,因为它在它之前。
答案 1 :(得分:1)
C#.NET MVC在CheckBoxFor()命令中存在一些问题。 CheckBoxFor()会自动生成一个具有相同名称的隐藏字段,并且如果未单独将其隔离在[Div]中,则会偶尔将支票丢到服务器上。即使在[display-field] div中包含标题或验证,也可能导致CheckBoxFor()出现问题。解决方法是隔离CheckBoxFor()或添加[onchange]更新,并且似乎更一致地工作。
<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