Html.DropDownList不会填充Razor中的“selected”

时间:2012-01-06 19:48:41

标签: asp.net-mvc-3 html-helper

此代码在aspx版本中有效(正确反映了用户的当前时区)。

<%= Html.DropDownList("User.TimeZone", AppHelper.GetUSTimeZones(Model.TimeZone))%>

在切换到Razor时,我发现渲染的控件没有将用户的时区作为所选项目。

我已经审核了this question并看到其他人遇到了同样的问题。我不希望HtmlHelpers在转移到Razor时工作相同吗?

1 个答案:

答案 0 :(得分:1)

对于您正在使用的DropDownList的重载,该方法接受字段名称的字符串和SelectListItem的IEnumerable。

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions.dropdownlist.aspx

所以你的AppHelper.GetUSTimeZones(Model.TimeZone))需要返回IEnumerable&lt; SelectListItem&gt;。

要选择一个选项,您需要指明SelectListItem是选定的选项。如下所示:

_timeZoneRepo.RetrieveAll().Select(t => new SelectListItem { Text = t.Name, Value = t.Id, Selected = TimeZone.Id == t.Id ? true : false });

希望它有所帮助。