Я никогда не делал этого раньше, но это то, что вы можете попробовать.
Попробуйте создать новый класс, который расширяет System.Web.Mvc.ViewPage. У меня нет источника MVC на этом компьютере, поэтому я не могу точно сказать, как среда создает этот экземпляр для представлений, но вы можете изменить базовый тип страницы в вашем Web.config, чтобы создать MVC экземпляры вашего нового типа, а не его собственного типа.
Затем вы можете добавить любые свойства, которые вы хотите, к этому новому типу и сделать их доступными в ваших представлениях.
Вам также необходимо создать универсальный тип для этого типа: Your.New.Page.Type<T>
и объявить его как тип в вашем представлении (я не совсем уверен, как это делается в Razor):
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Youre.New.Page.Type" %>
Вероятно, я скучаю по куче вещей.
См. Атрибут pageBaseType
:
<configuration>
<system.web>
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="Your.New.Page.Type, Your.New"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
</pages>
</system.web>
</configuration>