我正在使用asp.net MVC开发一个网站
我想在用户登录网站后显示用户名。
问题是User.Identity.Name
返回用户电子邮件,我不想更改它,因为用户名不是唯一的。我想在其他页面中访问电子邮件。
我喜欢在我的母版页中使用viewBag,但我不知道在哪里定义它。
如果我在Home/controller
中定义它,它只适用于此操作。
我应该使用过滤器吗?
答案 0 :(得分:1)
答案 1 :(得分:1)
如果您正在使用MVC,那么我强烈建议转移到ViewModel模式来完成此任务,而不是将对象填充到ViewBag中,主要有两个原因:1)类型安全,以及2)智能感知支持。
在这种情况下,您将从BaseViewModel继承MasterPage,并且您的操作将从BaseViewModel返回派生对象。然后,您可以在视图模型上设置数据,并在渲染时可供主页面使用:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<MyViewModelBase>" %>
或者,您可以制作一个“部分视图”,根据用户的状态呈现您需要的内容。