2012-01-06 67 views
0

此代碼在aspx版本中工作(正確地反映了用戶的當前時區)。Html.DropDownList不會在Razor中填充'selected'

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

在切換到剃刀我發現呈現的控件不會將用戶的時區作爲選定的項目。

我已閱讀this question並查看其他人遇到同樣的問題。難道我不希望HtmlHelpers在轉移到Razor時工作相同嗎?

回答

1

對於您正在使用的DropDownList的重載,該方法需要字段名稱的字符串和SelectListItem的IEnumerable。

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

所以你AppHelper.GetUSTimeZones(Model.TimeZone))需要返回的IEnumerable <SelectListItem>。

要選擇一個選項,您需要指出SelectListItem是選定的選項。所以像這樣:

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

希望它有幫助。

+0

這比我想要的要複雜得多,但我想這是工具的價格。從長遠來看(例如,下次我需要它),它(更好)還清。謝謝 – justSteve 2012-01-08 19:47:28