使用复选框& asp.net中的模型mvc c#

时间:2016-07-23 20:53:20

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我有一个模特

 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值传递给我的模型?感谢。

2 个答案:

答案 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