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

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

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

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

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

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

Ответы

Ответ 1

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

public class BaseModel
{
}

public class ChildModelOne : BaseModel
{
}

public class ChildModelTwo : BaseModel
{
}

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

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