Используйте viewBag на главной странице Asp.net MVC - PullRequest
1 голос
/ 27 мая 2011

Я занимаюсь разработкой сайта с использованием asp.net MVC

Я хочу показать имя пользователя после того, как он / она вошел на сайт.

Проблема в том, что User.Identity.Name возвращаетэлектронная почта пользователя, и я не хочу изменять это, потому что имя пользователя не уникально.И я хочу получить доступ к электронной почте на других страницах.

Мне нравится использовать viewBag на моей главной странице, но я не знаю, где его определить.

Если я определю его в Home/controller, это работает только для этого действия.

Должен ли я использовать фильтр?

Ответы [ 2 ]

1 голос
/ 27 мая 2011

Если вы используете MVC, тогда я бы настоятельно предложил бы перейти к шаблону ViewModel для достижения этой цели, а не вставлять объекты в ViewBag, в основном по двум причинам: 1) Тип безопасности и 2) Поддержка Intellisense.

В такой ситуации ваш MasterPage будет наследоваться от BaseViewModel, а ваши действия будут возвращать производные объекты от BaseViewModel.Затем вы можете установить данные для вашей модели представления, и они будут доступны главной странице при рендеринге:

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<MyViewModelBase>" %>

В качестве альтернативы, вы можете создать «частичное представление», которое отображает только тот контент, который вам нужен, на основесостояние пользователя.

1 голос
/ 27 мая 2011

Эта ссылка поможет вам с проблемой передачи данных на главную страницу.

Этот является «официальным» способом справиться с этим, он объясняет очень четко, но я настоятельно рекомендую прочитать первую ссылку также полностью.

...