ASP.NET MVC Общий Частичный - PullRequest
0 голосов
/ 14 мая 2010

Возможно ли частичное представление наследовать более чем одну модель?У меня есть три модели (контакты, клиенты, поставщики), которые все имеют адресную информацию (адрес).В интересах СУХОГО я включил информацию об адресе в его собственную модель, Адреса.Я создал частичное представление создания / обновления адресов и того, что нужно визуализировать в других трех других моделях создания / обновления.

Ответы [ 3 ]

2 голосов
/ 14 мая 2010

Вместо использования модели составного представления вы все равно можете быть СУХИМЫМ и иметь три вида (Контакты, Клиенты, Продавцы).Если вы хотите повторить себя при отображении информации об адресе, просто создайте шаблон для отображения типа.Таким образом, вы можете записать всю конкретную информацию для каждого Контакта, Клиента и Продавца в их собственных представлениях и просто указать:

<%= Html.DisplayFor(m => m.Address) %>

Теперь вы СУХОЙ, все еще поддерживая Принцип единой ответственности.1004 *

Подробнее о шаблонах отображения и редактирования вы можете посмотреть на Брэде Уилсоне или Фил Хаак сообщений на нем.

0 голосов
/ 14 мая 2010

Я полагаю, что единственный способ сделать это с помощью модели составного представления (что не обязательно плохо), так что-то вроде:

public class MyControllerActionViewModel
{
    public IList<Contact> Contacts { get; set; }
    public IList<Client> Clients { get; set; }
    public IList<Vendor> Vendors { get; set; }
}

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

Надеюсь, это поможет!

0 голосов
/ 14 мая 2010

Как насчет создания новой модели, которая содержит все три модели (контакты, клиенты, поставщики). Затем передайте эту новую модель вашему частичному. Оттуда вы можете получить доступ ко всем трем моделям из вашей только что созданной модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...