2015-02-23 23 views
0

我的代碼是這樣的Html.CheckBoxFor呈現兩個輸入這成爲一個問題。在表單提交

<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)。 第二個人的價值總是假的。所以當我發表我的表格帖子時,我無法獲得複選框的真正價值。它在那裏總會被視爲虛假。任何人都可以告訴我這是什麼?和一種方法來克服這一點?

+0

可能重複的[ASP.NET MVC:爲什麼CheckBoxFor會呈現額外的輸入標記以及如何才能使用FormCollection獲取值](http://stackoverflow.com/questions/2860940/asp-net-mvcwhy-does-the-checkboxfor-render-an-additional-input-tag-and-how-can) – Bryan 2015-02-23 05:32:08

回答

1

2個輸入是正確的(沒有隱藏的輸入可能會得到不正確的值)。如果複選框被選中,則true, false被回送,DefaultModelBinder將模型值設置爲true(第二個值被忽略)。如果取消選中複選框false已回發(未選中複選框不回發),因此模型屬性設置爲false

+0

但是在我的情況下,即使複選框被選中,我在控制器中出現錯誤? – Athul 2015-02-23 05:37:16

+0

顯示模型中的控制器方法和相關屬性。 – 2015-02-23 05:38:34

+0

看起來不錯(但爲什麼'[Bind(Include =「....」)]?)。你有任何的JavaScript(也許禁用複選框,這意味着它不會回發)? – 2015-02-23 05:45:16

相關問題