1

我正在使用 asp.net MVC 开发一个网站

我想在他/她登录网站后显示用户的姓名。

问题是User.Identity.Name返回用户电子邮件,我不想更改它,因为用户名不是唯一的。我想访问其他页面中的电子邮件。

我喜欢在我的母版页中使用 viewBag,但我不知道在哪里定义它。

如果我在 中定义它Home/controller,它只适用于这个动作。

我应该使用过滤器吗?

4

2 回答 2

1

链接将帮助您解决将数据传递到母版页的问题。

是处理该问题的“官方”方式,它以非常清晰的方式解释,但我强烈建议您也完整阅读第一个链接。

于 2011-05-27T15:46:08.413 回答
1

如果您使用的是 MVC,那么我强烈建议您使用 ViewModel 模式来完成此任务,而不是将对象填充到 ViewBag 中,主要有两个原因:1)类型安全和 2)Intellisense 支持。

在这种情况下,您将让 MasterPage 从 BaseViewModel 继承,并且您的操作将从 BaseViewModel 返回派生对象。然后,您可以在视图模型上设置数据,并且在渲染时它可用于母版页:

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

或者,您可以制作一个“部分视图”,根据用户的状态只呈现您需要的内容。

于 2011-05-27T15:46:48.957 回答