SelectList 不显示我的值
SelectList not showing my values
谁能告诉我为什么会有这段代码
@Html.DropDownList("priority2", new SelectList(new[] { 1,2,3 }, Model.Priority))
给我一个很好的下拉菜单,可以在 1、2、3 之间进行选择
但是这个
@Html.DropDownList("priority", new SelectList(new [] {
new SelectListItem() { Value = "1", Text = "1. Priority" },
new SelectListItem() { Value = "2", Text = "2. Priority" },
new SelectListItem() { Value = "3", Text = "3. Priority" } },
Model.Priority))
给了我 3 个选项,都说 'System.Web.Mvc.SelectListItem'
我做错了什么?
SelectList()
构造函数使用反射生成IEnumerable<SelectListItem>
。在您未指定 dataValueField
和 dataTextField
属性的情况下,该方法在内部使用集合中对象的 .ToString()
值。
在第一个示例中,您有一个值类型数组,因此 .ToString()
输出“1”、“2”等。
在第二个示例中,您有一个 SelectListItem
数组,其 .ToString()
方法输出 "SelectListItem".
要生成正确的 html,第二个示例需要
@Html.DropDownList("priority", new SelectList(new []
{
new SelectListItem() { Value = "1", Text = "1. Priority" },
new SelectListItem() { Value = "2", Text = "2. Priority" },
new SelectListItem() { Value = "3", Text = "3. Priority" }
}, "Value", "Text", Model.Priority))
其中第二个参数 "Value"
指定 SelectListItem
的 属性 名称用于选项的 value
属性,第三个参数 "Text"
指定 属性 用于选项显示文本。
然而,这只是毫无意义的额外开销(从原始 SelectList
创建第二个 SelectList
),并且在绑定到 [=43= 时忽略最后一个参数 Model.Priority
].
相反,第二个例子可以简单地
@Html.DropDownListFor(m => m.Priority, new []
{
new SelectListItem() { Value = "1", Text = "1. Priority" },
new SelectListItem() { Value = "2", Text = "2. Priority" },
new SelectListItem() { Value = "3", Text = "3. Priority" }
})
谁能告诉我为什么会有这段代码
@Html.DropDownList("priority2", new SelectList(new[] { 1,2,3 }, Model.Priority))
给我一个很好的下拉菜单,可以在 1、2、3 之间进行选择
但是这个
@Html.DropDownList("priority", new SelectList(new [] {
new SelectListItem() { Value = "1", Text = "1. Priority" },
new SelectListItem() { Value = "2", Text = "2. Priority" },
new SelectListItem() { Value = "3", Text = "3. Priority" } },
Model.Priority))
给了我 3 个选项,都说 'System.Web.Mvc.SelectListItem'
我做错了什么?
SelectList()
构造函数使用反射生成IEnumerable<SelectListItem>
。在您未指定 dataValueField
和 dataTextField
属性的情况下,该方法在内部使用集合中对象的 .ToString()
值。
在第一个示例中,您有一个值类型数组,因此 .ToString()
输出“1”、“2”等。
在第二个示例中,您有一个 SelectListItem
数组,其 .ToString()
方法输出 "SelectListItem".
要生成正确的 html,第二个示例需要
@Html.DropDownList("priority", new SelectList(new []
{
new SelectListItem() { Value = "1", Text = "1. Priority" },
new SelectListItem() { Value = "2", Text = "2. Priority" },
new SelectListItem() { Value = "3", Text = "3. Priority" }
}, "Value", "Text", Model.Priority))
其中第二个参数 "Value"
指定 SelectListItem
的 属性 名称用于选项的 value
属性,第三个参数 "Text"
指定 属性 用于选项显示文本。
然而,这只是毫无意义的额外开销(从原始 SelectList
创建第二个 SelectList
),并且在绑定到 [=43= 时忽略最后一个参数 Model.Priority
].
相反,第二个例子可以简单地
@Html.DropDownListFor(m => m.Priority, new []
{
new SelectListItem() { Value = "1", Text = "1. Priority" },
new SelectListItem() { Value = "2", Text = "2. Priority" },
new SelectListItem() { Value = "3", Text = "3. Priority" }
})