为了生成一个下拉列表,您需要在视图模型上使用2个属性:将所选值绑定的标量属性和将包含要显示在下拉列表中的项的集合属性.
所以你可以定义一个视图模型:
public class DropDownListviewmodel
{
public string SelectedValue { get; set; }
public IEnumerable Items { get; set; }
}
然后在您的主视图模型上具有此类型的属性:
public DropDownListviewmodel Foo { get; set; }
现在你可以有一个这种类型的自定义编辑器模板(〜/ Views / Shared / EditorTemplates / DropDownListviewmodel.ascx):
Language="C#" Inherits="System.Web.Mvc.ViewUserControl"
%>
x.SelectedValue,Model.Items) %>
然后在你的主视图中:
x.Foo) %>
现在剩下的就是让你的控制器动作渲染主视图来填充Foo属性和相应的值.可以硬编码,来自存储库或任何.没关系.
另一方面,如果您事先知道这些值,您可以在编辑器模板(〜/ Views / Shared / EditorTemplates / YesNoDropDown.ascx)中进行硬编码:
"",new SelectList(
new[]
{
new { Value = "true",Text = "Yes" },new { Value = "false",Text = "No" },},"Value","Text",Model
)
) %>
接着:
x.IsActive,"YesNoDropDown") %>
或者通过在您的视图模型上装饰IsActive属性:
[UIHint("YesNoDropDown")]
public bool IsActive { get; set; }
接着:
x.IsActive) %>