我DropDownListFor在MVC3应用中遇到问题。我能够使用StackOverflow弄清楚如何使它们出现在View上,但是现在我不知道如何在提交视图模型时捕获其相应属性中的值。为了使它起作用,我必须创建一个具有ID和value属性的内部类,然后必须使用an IEnumerable<Contrib>来满足DropDownListFor参数要求。但是,现在,MVC FW应该如何将在此下拉列表中选择的值映射回我的视图模型的simple string属性中?
DropDownListFor
IEnumerable<Contrib>
public class MyViewModelClass { public class Contrib { public int ContribId { get; set; } public string Value { get; set; } } public IEnumerable<Contrib> ContribTypeOptions = new List<Contrib> { new Contrib {ContribId = 0, Value = "Payroll Deduction"}, new Contrib {ContribId = 1, Value = "Bill Me"} }; [DisplayName("Contribution Type")] public string ContribType { get; set; } }
在我的视图中,将下拉列表放置在页面上,如下所示:
<div class="editor-label"> @Html.LabelFor(m => m.ContribType) </div> <div class="editor-field"> @Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId, new SelectList(Model.ContribTypeOptions, "ContribId", "Value")) </div>
当我提交表单时ContribType(当然)为null。
ContribType
正确的方法是什么?
您应该这样做:
@Html.DropDownListFor(m => m.ContribType, new SelectList(Model.ContribTypeOptions, "ContribId", "Value"))
哪里:
m => m.ContribType
是结果值所在的属性。