Html.CheckBoxFor呈现两个输入,这在Form Post中成为一个问题

时间:2015-02-23 05:26:55

标签: html asp.net asp.net-mvc razor

我的代码就像这样

<div class="form-group" style="padding-top: 30px;">
    @Html.CheckBoxFor(model => model.IsVatPaidByInsurer)
</div>

内部模型类

   public bool IsVatPaidByInsurer { get; set; }

内部控制器

  public ActionResult Create([Bind(Include = "PayerID,Name,CreatedDate,PayerTypeSelected,ReferingInstitute,ApplicationUserId" +
                                               "IsVatPaidByInsurer,PatientContribution")] Payer payer)

我希望这行代码在前端生成一个复选框,但它呈现的方式是这样的(值不是真的,我只是选中了复选框)

<div class="form-group" style="padding-top: 30px;">
    <input data-val="true" data-val-required="The IsVatPaidByInsurer field is required." id="IsVatPaidByInsurer" name="IsVatPaidByInsurer" type="checkbox" value="true">
    <input name="IsVatPaidByInsurer" type="hidden" value="false">
</div>

正如您所看到的,生成了两个具有相同名称的输入(IsVatPaidByInsurer)。 第二个值总是假的。因此,当我发表我的表格后,我无法获得复选框的真正价值。它会在那里解释为假。任何人都可以打电话给我这是关于什么的?以及克服这个问题的方法吗?

1 个答案:

答案 0 :(得分:1)

2个输入是正确的(没有隐藏输入,您可能会得到不正确的值)。如果选中该复选框,则会回发true, falseDefaultModelBinder会将模型值设置为true(忽略第二个值)。如果取消选中该复选框,则会回发false(未选中复选框不会回发),因此模型属性设置为false