Asp.net-Mvc
DropDownListFor(…) 預設選擇 boolean false
我在應用程序中有典型的 YesNo 下拉菜單。為此,我為未來的擴展目的開發了模型(而不是 ViewModel 實用程序)類。
public string Text { get; set; } // represents text part public bool Value { get; set; } // represent value public List<DropDown> DropDowns { get; set; } //list for binding public void BuildYesNoDropDown() { DropDowns = new List<DropDown>(); DropDowns.Add(new DropDown { Text = "Yes", Value = true }); DropDowns.Add(new DropDown { Text = "No", Value = false }); }然後,我將其綁定在如下視圖中:
@Html.DropDownListFor(x => x.SelectedValue, new SelectList(Model.DropDowns, "Value", "Text",1),"Select") //last para - OptionLabel在視圖上,所有三個參數都得到顯示,即“選擇”、“是”和“否”。但是,預設情況下已選擇“否”。如果我將“Value”屬性設為整數,那麼它可以正常工作,預設情況下會選擇“Select”,但如程式碼中所述,如果我傾向於使用 bool 類型,則選擇“No”。
當 DataValueField 為 bool 時如何獲得正常行為?
模型:
public bool? Value { get; set; }看法:
@Html.EditorFor(model => model.Value)這會自動生成一個下拉列表,其中包含 3 個狀態,這些狀態與可空 bool 的 3 個狀態相匹配:null、true、false。如果您需要回答該值,則可以使用如下數據註釋:
模型:
[Required] public bool? Value { get; set; }要點是你的模型需要是一個真實的模型——它需要對從未設置到設置的輸入值進行建模。如果您需要輸入 a
int,您可能希望使用可為空的 int (soint?) 並要求該值。這樣,初始值為 null 而不是 0。它與其他數據類型類似,但string已經可以為 null。
視圖模型
public bool flag { get; set; }看法
@Html.DropDownListFor(model => model.flag, new List<SelectListItem>() { new SelectListItem() { Text = "Yes", Value = "True" }, new SelectListItem() { Text = "No", Value = "False"} }, "Select.....", new { @id = "flag", @class="form-control" }) @Html.ValidationMessageFor(model => model.flag)