MVC3模型 - 如何使EditorFor成为下拉列表?

3

我正在为两所大学的同龄人制作一个MVC4 Web应用程序,并且以后我会扩展到其他学校。在我的模型中,我目前有:

       public string school { get; set; }

I would like it so when I do

       @Html.EditorFor(model => model.school)

这将是一个“学校1”和“学校2”的下拉菜单。

如何干净地实现这个呢?如果可以的话,我想能够在模型中进行更改,而不必在视图中做任何事情,除了调用@Html.EditorFor。如果实现这一点的唯一方法是在视图中进行操作,那也可以。

2个回答

5

可以使用 Html.DropDownListFor 代替 Html.EditorFor

@{
   var items = new SelectList(new[]
                   {
                       new SelectListItem {Text = "School1", Value = "School1"},
                       new SelectListItem {Text = "School2", Value = "School2"},
                   }, "Text", "Value");
}

@Html.DropDownListFor(x => x.school, @items)

谢谢你的帮助。只是为了确保我理解正确,我应该把所有这些放在视图中,对吗? - Kyle
1
是的,这应该放在你的视图中。它使用Razor语法。可能你希望将可能的项目列表移动到你的控制器并放入你的视图模型中。但是为了快速演示目的,这样也可以 :) - Wouter de Kort
尝试更改SelectListItem的Text和Value属性 - Wouter de Kort

1

你可以使用上述代码,或者在你的页面中使用以下代码。

@Html.DropDownListFor(model => model.Status, new List<SelectListItem>
                    {
                       new SelectListItem{ Text="New", Value = "New" },
                       new SelectListItem{ Text="InProcess", Value = "InProcess" },
                       new SelectListItem{ Text="Completed", Value = "Completed" },
                       new SelectListItem{ Text="Rejected",Value="Rejected"},

                    }, "Select Status", new { @class = "form-control select2_demo_4" })

这肯定会帮助你,当你选择其中任何一个时,你的模型将会获得价值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接