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