在母版页 Asp.net MVC 中使用 viewBag

发布于 2024-11-10 06:41:29 字数 262 浏览 0 评论 0原文

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

我想在用户登录网站后显示用户名。

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

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

如果我在 Home/controller 中定义它,它仅适用于此操作。

我应该使用过滤器吗?

I am developing a website using asp.net MVC

I want to show the name of user after he/she logged in the website.

The problem is that User.Identity.Name returns user email and I do not want to change that because user name is not unique. And I want to access email in other pages.

I like to use a viewBag in my master page, but I do not know where to define it.

If I define it in Home/controller, it works just for this action.

Should I use filter?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泪痕残 2024-11-17 06:41:29

This link will help you with the problem of passing data to master page.

This is the "official" way to handle that, it explains in a very clear way, but I strongly recommend to read the first link completly too.

面犯桃花 2024-11-17 06:41:29

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

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

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

或者,您可以创建一个“部分视图”,根据用户的状态仅渲染您需要的内容。

If you're using MVC, then I would strongly suggest moving to a ViewModel pattern to accomplish this, rather than stuffing objects into the ViewBag, mostly for two reasons: 1) Type Safety, and 2) Intellisense support.

In this kind of situation, you would have your MasterPage inherit from a BaseViewModel, and your actions would return derived objects from the BaseViewModel. You can then set data on your view model, and it will be available to the master page when rendering:

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

Alternatively, you could make a 'partial view' that renders just the content you need based on the user's state.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文