2012-10-22 33 views
0

我经历了很多尝试设置dropdownlist值的方法,并且必须做些愚蠢的事情,因为没有任何方法正在工作。在MVC中设置DropDownList的选定值3

@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点,因为它的第一个列表已经进入列表。我想如果model.startTime有一个值,它设置为该值。

回答

0

如果你有你的模型开始时间属性,该属性的值相匹配的一个(即它匹配“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;" }) 
+0

两者都是对的,但这最终导致我指出了真正的问题。我正在尝试匹配06:00至6:00。我知道它必须是愚蠢的,没有意识到它是增加了领先的0。 – Adam

3

您可以使用DropDownListFor并让Razor引擎执行选择与属性匹配的项目的工作。

@Html.DropDownListFor(model => model.startTime, startTimeList) 

另一种方法是明确设置Selected上相匹配的项目:

startTimeList.First(item => item.Text.Equals(model.startTime)).Selected = true; 
相关问题