ASP.NET MVC2: как визуализировать представление, если имеется несколько разных моделей - PullRequest
2 голосов
/ 12 декабря 2010

Я знаю, что модель представления может использоваться для визуализации представления, но если странице требуются разные модели, как я могу передать их представлению?И как их использовать?

Ответы [ 2 ]

8 голосов
/ 12 декабря 2010

Если вам нужно пропустить несколько моделей, то создайте всеобъемлющую модель, в которой в качестве свойств отображаются уменьшенные модели.

Например, предположим, вы собираетесь отобразить страницу для управления группами пользователей для вашего приложения. Вам, вероятно, потребуется передать IEnumerable<UserDisplayModel>, а также IEnumerable<GroupDisplayModel> в представление. Создайте новую модель дисплея следующим образом:

class GroupManagementDisplayModel
{
    public IEnumerable<UserDisplayModel> Users { get; set; }
    public IEnumerable<GroupDisplayModel> Groups { get; set; }
}

Вместо этого передайте экземпляры этой модели вашему виду.

1 голос
/ 12 декабря 2010

Если вы обнаружите, что хотите много делать, и что вам не очень важно создавать множество мелких типов, вы можете использовать dynamic тип .NET 4:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

В своем действии передайте анонимный тип вашему представлению:

return View(new { Users, Groups });

Ссылка на них в вашем представлении, как вы бы в противном случае.

Вы теряете intellisense и строгую типизацию таким образом, но если вы не компилируете свои представления (что требует ручного редактирования файла .csproj и делает сборку на намного медленнее), тогда у вас нет времени на компиляцию в любом случае проверять ваши взгляды.

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