我正在使用 ASP.NET MVC3 我需要创建一个具有 4 个值的 DropDownList:
- 别介意
- 0
- 1
- 2 或 +
将“不介意”作为选定项目。
这是我的代码:
public static IEnumerable<SelectListItem> ListAnimals()
{
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem { Text = "Don't mind", Value = "-1", Selected = true });
items.Add(new SelectListItem { Text = "0", Value = "0" });
items.Add(new SelectListItem { Text = "1", Value = "1" });
items.Add(new SelectListItem { Text = "2 or +", Value = "2" });
return items;
}
在我看来,我像这样使用它:
@Html.DropDownListFor(m => m.AnimalNumber, new SelectList(Animal.ListAnimals() , "Value", "Text"))
使用此代码,所选项目始终为“0”,而当我明确编写时它应该是“不介意”。但是
当:items.Add(new SelectListItem { Text = "0", Value = "0" });
变成:items.Add(new SelectListItem { Text = "0", Value = "[Anything but 0]" });
它完美地工作并且正确选择了“不介意”。
所以,我认为 MVC 会自动选择 item where Value = "0"
,尽管有关键字Selected
......我怎样才能覆盖它?我真的需要 let Value = "0"
,我相信我们可以覆盖这种行为。有人知道怎么做吗?
(顺便说一句,我知道我的问题与这个问题非常接近,但这个线程中给出的答案并不让我满意。我不想用 HTML 编写我的 DDL,因为我会失去我的价值和我的模型之间的绑定,并且编写一个 jQuery 脚本来更改所选值是“有点 hacky”。)
是否存在任何正确的方法?