Многоразовый шаблон редактора с DropDownList для бизнес-объектов

Я использую MVC3 с представлениями Razor и хотел бы создать многократно используемые DropDownLists для нескольких моих классов, но после долгих поисков я не нашел примера, который работает именно так, как мне нужно ...

В этом примере у меня есть два таких класса: -

public class Person
{
  public int ID { get; set; }
  public string Name { get; set; }
  public Group Group { get; set; }
}

public class Group
{
  public int ID { get; set; }
  public string Name { get; set; }
}

У меня есть рабочий контроллер / Просмотр для человека. В представлении есть элемент управления DropDownListFor:

@model Person

...

@Html.DropDownListFor(o => o.Group.ID, (ViewData["groups"] as SelectList))

Представление использует класс Person напрямую, а не в качестве промежуточной модели, поскольку на данном этапе я не нашел веских причин для абстрагирования одного от другого.

Вышеупомянутое отлично работает. .. в контроллере я беру значение из Group.ID в человеке, возвращенном из представления, ищу его и устанавливаю Person.Group на результат. Работает, но не идеально.

Я нашел здесь связыватель: Значения MVC DropDownList, отправленные в модель, не привязаны , которые помогут мне, но у меня это еще не работает ... поскольку это действительно кажется полезным, только если я могу использовать его повторно.

Я бы хотел иметь что-то вроде этого в шаблоне: -

@model Group

@Html.DropDownListFor(o => o.Group.ID, (ViewData["groups"] as SelectList))

И использовать его в таком представлении: -

@Html.EditorFor(o => o.Group)

Однако приведенное выше, похоже, не работает ... указанная выше строка EditorFor вставляет редакторы для всего класса (например, текстовое поле для Group.Description) ... вместо вставки DropDownList с моими перечисленными группами

у меня есть указанный выше шаблон в файле с именем Group.cshtml в разделе Views / Shared / EditorTemplates

. Если это сработает, то всякий раз, когда класс имеет свойство типа Group, этот редактор DropDownList будет использоваться по умолчанию (или, по крайней мере, если это определено некоторыми attribute)

Заранее благодарим за любой предоставленный совет ...

5
задан Community 23 May 2017 в 12:17
поделиться