我已经通过多种方法尝试设置下拉列表的值,并且必须做一些愚蠢的事情,因为没有一种方法可以正常工作。
@Html.DropDownList("startTime", @Model.startTimeList, new { @class = "startTime", style = "width: 100px;" })
生成的半小时增量列表。
在我的控制器中,我设置了这个字符串值..
model.startTime = myTime + " " + amOrPm; //ex 10:30 PM
我的列表看起来像这样。
List<SelectListItem> startTimeList = new List<SelectListItem>();
SelectListItem time12 = new SelectListItem { Text = "12:00 PM", Selected = false, Value = "12:00PM" };
startTimeList.Add(time12);
SelectListItem time12Half = new SelectListItem { Text = "12:30 PM", Selected = false, Value = "12:30PM" };
startTimeList.Add(time12Half);
我的列表始终默认为12:00 PM,因为它是第一个进入列表的列表。我希望如果model.startTime有一个它设置为该值的值。
答案 0 :(得分:3)
您可以使用DropDownListFor
并让Razor引擎完成选择与该属性匹配的项目的工作。
@Html.DropDownListFor(model => model.startTime, startTimeList)
另一种方法是在匹配的项目上明确设置Selected
:
startTimeList.First(item => item.Text.Equals(model.startTime)).Selected = true;
答案 1 :(得分:0)
如果您的模型上有startTime属性,并且该属性的值与列表中的某个值匹配(即,它匹配“12:00 PM”,或“12:30 PM”但不匹配“12:00 PM“或”12:30 PM“),然后我认为应该工作:
@Html.DropDownListFor(model => model.startTime,
@Model.startTimeList,
new { @class = "startTime", style = "width: 100px;" })