0

我已经尝试了多种方法来尝试设置下拉列表的值,并且必须做一些愚蠢的事情,因为这些方法都不起作用。

@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 有一个设置为该值的值。

4

2 回答 2

3

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

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

Selected另一种方法是在匹配的项目上显式设置:

startTimeList.First(item => item.Text.Equals(model.startTime)).Selected = true;
于 2012-10-22T21:31:51.053 回答
0

如果您的模型上有 startTime 属性,并且该属性的值与列表中的值之一匹配(即,它匹配“12:00PM”或“12:30PM”但不匹配“12:00 PM”或“12:30 PM”),那么我认为这应该可行:

@Html.DropDownListFor(model => model.startTime, 
    @Model.startTimeList, 
    new { @class = "startTime", style = "width: 100px;" })
于 2012-10-22T21:37:37.903 回答