Razor MVC, где разместить глобальные переменные, которые доступны через главную страницу, partiview и view?

Здравствуйте, Бритва MVC Гуру:

Вопрос новичка.

Фон. У меня есть пользовательский IIdentity, который устанавливается в HttpModule, прежде чем он попадает в контроллер и Просмотры. Чтобы использовать это, я должен сделать

   MyIdentity myIdentity = (MyIdentity)((GenericPrincipal)context.User).Identity;
   MyComplexUser user = myIdentity.User;
   //user.name //user.location //user.username  //etc

Проблема в том, что я использую объект в разных местах, таких как

мастер макетНекоторые вложенные макеты подуровняНекоторые частичные взглядыНекоторые взгляды

Это действительно зависит от того, какие свойстваMyComplexUser» возражать, взгляды нужны.

В настоящее время, в представлениях, я должен сделать это действительно сложное приведение, чтобы добраться до свойства. Например, если я хочу "Название" пользователя, мне нужно сделать

@ (((MyComplexUser) (((MyIdentity) ((GenericPrincipal) context.User) .Identity) .user)). Имя)

Я полагаю, я мог бы поместить его в контроллеры, а затем заполнить ViewBag свойством ViewBag.MyUser, но затем

Я неМне нравится использовать ViewBag. Я предпочитаю строго типизированные объектыЕсли я использую строго типизированный объект ("MyUser») для просмотра, то я должен популярен все эти модели с "MyUser» имущество. Чувствует себя немного грязным? Поскольку мне нравится держать свои модели в чистоте и быть точным в отношении представлений, с которыми они связаны. Кроме того, это становится излишне повторяющимся.В таких местах, как master_layout.cshtml или частичные просмотры, как получить доступ?MyUser» если я положу их в контроллере?Использовать RenderAction и создавать частичные представления для каждого свойства пользователя - это перебор?

Благодарю. Опять яЯ новичок в MVC 4, любое предложение очень ценит это.

Ответы на вопрос(1)

Ваш ответ на вопрос