Чтобы создать выпадающий список, вам нужно 2 свойства в вашей модели представления: скалярное свойство, с которым нужно связать выбранное значение, и свойство коллекции, которое будет содержать элементы, отображаемые в раскрывающемся списке.
можно определить модель представления:
public class DropDownListViewModel
{
public string SelectedValue { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
, а затем в вашей модели основного вида есть свойство этого типа:
public DropDownListViewModel Foo { get; set; }
Теперь вы можете иметь собственный шаблон редактора для этого типа (~/Views/Shared/EditorTemplates/DropDownListViewModel.ascx
):
<%@ Control
Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DropDownListViewModel>"
%>
<%= Html.DropDownListFor(x => x.SelectedValue, Model.Items) %>
, а затем на главном экране:
<%= Html.EditorFor(x => x.Foo) %>
Теперь все, что осталось, - это действие контроллера, отображающее основной вид для заполнения Foo
свойство с соответствующими значениями.Они могут быть жестко закодированы, взяты из хранилища или чего-то еще.На самом деле это не имеет значения.
С другой стороны, если вы знали значения заранее, вы можете жестко их кодировать в шаблоне редактора (~/Views/Shared/EditorTemplates/YesNoDropDown.ascx
):
<%= Html.DropDownList(
"",
new SelectList(
new[]
{
new { Value = "true", Text = "Yes" },
new { Value = "false", Text = "No" },
},
"Value",
"Text",
Model
)
) %>
, а затем:
<%= Html.EditorFor(x => x.IsActive, "YesNoDropDown") %>
или путем украшения свойства IsActive в модели представления:
[UIHint("YesNoDropDown")]
public bool IsActive { get; set; }
, а затем:
<%= Html.EditorFor(x => x.IsActive) %>