![](/img/trans.png)
[英]Why Html.Checkbox(“Visible”) returns “true, false” in ASP.NET MVC 2?
[英]Html.CheckBox returning value not true/false
這看起來很荒謬,但你只能從MVC復選框中返回true / false嗎? 我記得當天(在經典的asp中)從勾選的復選框返回一個值是完全有效的,但微軟似乎決定復選框應該只包含true / false值。
所以如果你添加以下內容:
@Html.CheckBox("PropertyTypes", true, new {@value="A"})
我希望我的表單POST包含Property=A
,我最終得到的是Property=A&Property=true
然后打破模型,所以我在屬性中得到null
而不是我想要的字符串。
經過調查后發現,這是因為微軟增加了額外的輸入,所以如果我不想檢查輸入, 我會得到一個假 ... ...非常感謝......:/
<input id="PropertyTypes" type="checkbox" value="Hotel" name="PropertyTypes" data-val-youmustselectatleastone="You must select at least one Property Type" data-val="true" checked="checked">
<input type="hidden" value="false" name="PropertyTypes">
為什么!
我只能使用平面HTML編寫輸入,但后來我放棄了所有不引人注目的驗證。
關於如何擺脫這種愚蠢的想法?
Ps復選框的數量是動態的,因此為每個值添加屬性不會削減它。
這看起來很荒謬,但你只能從MVC復選框中返回true / false嗎?
我覺得這很荒謬。 當你給它第二個想法建模一個布爾變量的檢查/未檢查狀態實際上是有道理的。
為什么!
因為這就是框架的設計者決定實現CheckBox幫助器的方式。
關於如何擺脫這種愚蠢的想法?
通過使用視圖模型當然:
public class MyViewModel
{
public int Id { get; set; }
public bool IsChecked { get; set; }
}
然后假設您有一個集合,您將使用復選框和隱藏字段來存儲項目的相應ID:
@Html.HiddenFor(x => x.SomeCollection[i].Id)
@Html.CheckBoxFor(x => x.SomeCollection[i].IsChecked)
提交表單后,您將獲得包含項目ID的集合屬性以及是否已選中它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.