Вы могли бы рассмотреть возможность создания другого объекта, который более точно представляет представление, которое вы пытаетесь визуализировать.
Допустим, у меня есть объект MyDomain.Order
, поэтому я делаю страницу вида, которая выглядит примерно как ViewPage<MyDomain.Order>
.Теперь, скажем, у меня есть меню, которое отключено от зарегистрированного пользователя, например.Не имеет смысла иметь меню как свойство MyDomain.Order
.Я хотел бы создать другой объект, специально для вида, назовите его как OrderPageModel
и иметь свойства MyDomain.Order
и List<MenuItem>
в качестве свойств этого нового объекта, мой вид будет настроен как ViewPage<OrderPageModel>
.
Другая вещь, которую следует учитывать, может быть чем-то вроде Html.RenderAction()
.У меня такой же сценарий, и, как вы упомянули в своем вопросе, он имеет главную страницу, и, как в моем примере, допустим, он содержит меню, общее для вашего сайта.Вы можете создать частичное представление (UserMenu.ascx
) и контроллер (SiteController.cs
) с действием (UserMenu
), которое вычисляет элементы для меню.Внутри вашей главной страницы вы можете затем позвонить <% Html.RenderAction("UserMenu","SiteController") %>
.
. Я бы использовал первый пример, если это может быть что-то, созданное для определенного вида: просто сделайте его частью модели.Я бы использовал второй пример, если бы он был чем-то более общим для сайта, например меню.