ASP.NET MVC - разные модели для главной страницы и страницы просмотра - PullRequest
15 голосов
/ 23 апреля 2009

У меня есть строго типизированная главная страница, но я хочу использовать другой тип для некоторых дочерних страниц.

Например, на главной странице ...

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %>

Клиент уже является составным объектом, поэтому на некоторых дочерних страницах я могу придерживаться той же модели и просто ссылаться на объекты-члены. Но на других страницах это не имеет смысла, поскольку я имею дело с другой моделью, например, дочерней страницей, которая имеет дело с моделью Customer.

Моей главной странице по-прежнему нужна модель клиента, но дочерние представления будут полностью работать с разными моделями. Проблема в том, что в контроллере вы можете передать только одну объектную модель в View. Есть ли способ передать одну модель мастеру, а другую - представлению? Спасибо!

1 Ответ

14 голосов
/ 23 апреля 2009

Вы можете создать иерархию и передать базовую модель на главную страницу, а дочерние модели - в свои представления.

public class BaseModel
{
}

public class ChildModelOne : BaseModel
{
}

public class ChildModelTwo : BaseModel
{
}

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

Очень просто.

...