我正在尝试使用
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 }); } } }
控制器:
public class HomeController : Controller { public ActionResult Index() { return View(new Settingsviewmodel()); } [HttpPost] public ActionResult Index(Settingsviewmodel model) { return View(model); } }
视图:
<% using (Html.BeginForm()) { %> <%= Html.DropDownListFor( x => x.TimeZone,new { @class = "SecureDropDown" } ) %> <input type="submit" value="Select timezone" /> <% } %> <div><%= Html.Encode(Model.TimeZone) %></div>