2012-01-06 5 views
0

このコードは、aspxバージョンで正しく機能しました(ユーザーの現在のタイムゾーンを正確に反映)。レイザーへの切り替えでHtml.DropDownListはレイザーで 'selected'に設定されません

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

私は、レンダリングコントロールは、選択した項目として、ユーザのタイムゾーンを配置しないことを発見しています。

私はthis questionを見直して、他の人が同じ問題を経験していることを確認しました。 Razorに移動するときにHtmlHelpersが同じように動作するとは限りませんか?

答えて

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

関連する問題