2012-10-22 36 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; 
相關問題