簡體   English   中英

Html.CheckBox返回值不是true / false

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM