我有一个包含许多控件的表单 - 没什么特别的:
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<fieldset>
<legend>EmployeeViewModel</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Employee.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Employee.Title)
etc.....
更新 我的视图模型:
public class EmployeeCreateViewModel
{
public EmployeeCreateModel Employee { get; set; }
..etc
我的员工模型:
public class EmployeeCreateModel
{
[Required]
public string Title { get; set; }
[DisplayName("Job Title")]
[Required]
public string JobTitle { get; set; }
public bool Active { get; set; }
...etc
问题- 我正在使用不显眼的验证,它工作正常,直到我在表单中添加一个复选框。无论复选框状态如何,都会提交表单,绕过客户端验证,服务器端验证会捕获错误。这是我的复选框:
<div class="editor-label">
@Html.LabelFor(model => model.Employee.Active)
</div>
<div class="editor-field">
@Html.CheckBoxFor(model => model.Employee.Active)
</div>
复选框模型属性不是必填字段,因此不需要验证,我可以看到它在到达控制器方法时具有有效的 True/False 值。
为什么会发生这种情况,我该如何解决?