Sta*_*tch 8 asp.net-mvc asp.net-mvc-3 asp.net-mvc-2
我在应用程序中有典型的YesNo类型的下拉列表.为此,我为未来的扩展程序开发了模型(而不是ViewModel Utility)类.
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 });
}
Run Code Online (Sandbox Code Playgroud)
然后,我在视图中将其绑定如下:
@Html.DropDownListFor(x => x.SelectedValue, new SelectList(Model.DropDowns, "Value", "Text",1),"Select") //last para - OptionLabel
Run Code Online (Sandbox Code Playgroud)
在视图中,所有三个参数都显示,即"选择","是"和"否".但是,默认情况下选择"否".如果我将"Value"属性设置为整数然后它工作正常并且默认选择"Select",但是如代码中所提到的,如果我倾向于使用bool类型,则选择"No".
当DataValueField是bool时,如何获得正常行为?
Jos*_*980 11
视图模型
public bool flag { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图
@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)
Run Code Online (Sandbox Code Playgroud)
模型:
public bool? Value { get; set; }
Run Code Online (Sandbox Code Playgroud)
视图:
@Html.EditorFor(model => model.Value)
Run Code Online (Sandbox Code Playgroud)
这会自动生成一个下拉列表,其中3个状态与可空的bool的3个状态匹配:null,true,false.如果您需要回答Value,可以使用如下数据注释:
模型:
[Required]
public bool? Value { get; set; }
Run Code Online (Sandbox Code Playgroud)
外卖是你的模型需要是一个真实的模型 - 它需要模拟输入值从未设置到设置.如果需要输入a int,则可能需要使用可为空的int(so int?)并且需要该值.这样,初始值为null而不是0.它与其他数据类型类似,除了string它已经可以为空.
就我而言,我在同一页面上有一堆这样的下拉菜单,我想我会很聪明并重用选择列表,例如
var YesOrNoTriState = new List<SelectListItem> {
new SelectListItem { Text = "Select", Value = "" },
new SelectListItem { Text = "Yes", Value = true.ToString() },
new SelectListItem { Text = "No", Value = false.ToString() }
};
Run Code Online (Sandbox Code Playgroud)
并且在视图中
<%: Html.DropDownListFor(x => x.Field1, Model.YesOrNoTriState) %>
<%: Html.DropDownListFor(x => x.Field2, Model.YesOrNoTriState) %>
Run Code Online (Sandbox Code Playgroud)
那不起作用。我为每个下拉列表初始化了一个单独的选择列表并解决了问题
| 归档时间: |
|
| 查看次数: |
17921 次 |
| 最近记录: |