MVC C# - 当我使用复选框时,'checked'值无效

Nat*_*Pet 0 c# razor asp.net-mvc-3

我有一个名为W2_Sent的字段,定义为(bit,null)

在我看来,我有以下内容,将其显示为一个复选框:

     <div class="editor-label"  style="width: 10em">                        
       @Html.Label("W2 Sent")
     </div>
     <div class="editor-field">
       @Html.EditorFor(model => model.W2_Sent)
       @Html.ValidationMessageFor(model => model.W2_Sent)
     </div>
Run Code Online (Sandbox Code Playgroud)

如果我检查它,我收到一个错误

值'checked'对W2_Sent无效

      [HttpPost]
      public ActionResult Create(Employee emp)
      {

        foreach (ModelState modelState in ViewData.ModelState.Values)
        {
            foreach (ModelError error in modelState.Errors)
            {

                string s = "error";

            }

        }
Run Code Online (Sandbox Code Playgroud)

我能够在上面看到的foreach循环中捕获错误..

为什么我得到的值"已检查"无效

VJA*_*JAI 12

要在表单中显示复选框,您应该始终使用@Html.CheckBox/CheckBoxFor而不是<input type="checkbox" name="gender" />.当您使用@Html.CheckBox/CheckBoxForASP.NET时,MVC会生成一个隐藏字段,该字段具有布尔值,并且将绑定到您的模型属性.

当你直接使用html部分时,浏览器会将字段的值发布为字符串"checked"(如果是),并在模型绑定中抛出错误.