我正在尝试使用
Html.DropDownListFor<> HtmlHelper和我在帖子上绑定有点麻烦. HTML呈现正确但我在提交时从未获得“选定”值.
- <%= Html.DropDownListFor( m => m.TimeZones,Model.TimeZones,new { @class = "SecureDropDown",name = "SelectedTimeZone" } ) %>
- [Bind(Exclude = "TimeZones")]
- public class Settingsviewmodel : ProfileBaseModel
- {
- public IEnumerable TimeZones { get; set; }
- public string TimeZone { get; set; }
- public Settingsviewmodel()
- {
- TimeZones = GetTimeZones();
- TimeZone = string.Empty;
- }
- private static IEnumerable GetTimeZones()
- {
- var timeZones = TimeZoneInfo.GetSystemTimeZones().ToList();
- return timeZones.Select(t => new SelectListItem
- {
- Text = t.DisplayName,Value = t.Id
- } );
- }
- }
我尝试了一些不同的东西,我确信我做的事情很愚蠢……只是不确定它是什么:)
解决方法
这是我为您编写的一个示例,用于说明DropDownListFor帮助方法的用法:
模型:
- public class Settingsviewmodel
- {
- public string TimeZone { get; set; }
- public IEnumerable<SelectListItem> TimeZones
- {
- get
- {
- return TimeZoneInfo
- .GetSystemTimeZones()
- .Select(t => new SelectListItem
- {
- Text = t.DisplayName,Value = t.Id
- });
- }
- }
- }
控制器:
视图:
- <% using (Html.BeginForm()) { %>
- <%= Html.DropDownListFor(
- x => x.TimeZone,new { @class = "SecureDropDown" }
- ) %>
- <input type="submit" value="Select timezone" />
- <% } %>
- <div><%= Html.Encode(Model.TimeZone) %></div>