MVC DropDownList 奇怪的行为
MVC DropDownList weird behaviour
我正在尝试使用以下代码将下拉列表与 ViewBag 绑定:
C#
ViewBag.Type = new List<SelectListItem>()
{
new SelectListItem(){ Value="1", Text="a" },
new SelectListItem(){ Value="2", Text="b" },
new SelectListItem(){ Value="3", Text="c", Selected = true }
}
cshtml
@Html.DropDownList("Type", ViewBag.Type as IEnumerable<SelectListItem>, "Select type")
也试过
@Html.DropDownListFor(m => m.Type, ViewBag.Type as IEnumerable<SelectListItem>, "Select type")
但在上述两种情况下,Type
字段未被自动选择。
但是当我尝试时
@Html.DropDownList("Type1", ViewBag.Type as IEnumerable<SelectListItem>, "Select type")
然后 Type
字段被 c 选择(值 = 3)
在上述情况下,我只是更改了名称(Type -> Type1)及其工作方式!!任何想法 ?为什么它不能使用实际的字段名称?
您正在创建与 ViewBag 的键相同的下拉列表 name.so 它会在 runtime.that 发生冲突,这就是 ID Type1 的下拉列表有效的原因。
这是因为DropDownList
helper会检查是否有ViewBag.FieldName
然后自动绑定
- 您可以在
ViewBag.SomethingElse
或 中更改 ViewBag.Type
使用SelectList
ViewBag.Type = new SelectList()
{
new SelectListItem(){ Value="1", Text="a" },
new SelectListItem(){ Value="2", Text="b" },
new SelectListItem(){ Value="3", Text="c", Selected = true }
}
///----in your view
@Html.DropDownListFor(m => m.Type, ViewBag.Type as SelectList, "Select type")
我正在尝试使用以下代码将下拉列表与 ViewBag 绑定:
C#
ViewBag.Type = new List<SelectListItem>()
{
new SelectListItem(){ Value="1", Text="a" },
new SelectListItem(){ Value="2", Text="b" },
new SelectListItem(){ Value="3", Text="c", Selected = true }
}
cshtml
@Html.DropDownList("Type", ViewBag.Type as IEnumerable<SelectListItem>, "Select type")
也试过
@Html.DropDownListFor(m => m.Type, ViewBag.Type as IEnumerable<SelectListItem>, "Select type")
但在上述两种情况下,Type
字段未被自动选择。
但是当我尝试时
@Html.DropDownList("Type1", ViewBag.Type as IEnumerable<SelectListItem>, "Select type")
然后 Type
字段被 c 选择(值 = 3)
在上述情况下,我只是更改了名称(Type -> Type1)及其工作方式!!任何想法 ?为什么它不能使用实际的字段名称?
您正在创建与 ViewBag 的键相同的下拉列表 name.so 它会在 runtime.that 发生冲突,这就是 ID Type1 的下拉列表有效的原因。
这是因为DropDownList
helper会检查是否有ViewBag.FieldName
然后自动绑定
- 您可以在
ViewBag.SomethingElse
或 中更改 使用
SelectList
ViewBag.Type = new SelectList() { new SelectListItem(){ Value="1", Text="a" }, new SelectListItem(){ Value="2", Text="b" }, new SelectListItem(){ Value="3", Text="c", Selected = true } } ///----in your view @Html.DropDownListFor(m => m.Type, ViewBag.Type as SelectList, "Select type")
ViewBag.Type