使变量在 MVC 3 中普遍 ASP.NET 可访问

本文关键字:ASP NET 访问 变量 MVC | 更新日期: 2023-09-27 18:31:24

所以当你使用Java制作网站时,你有一个叫做会话的东西,只要浏览器会话还在,你就可以在其中存储任何你想要的信息。

我对使用 MVC 3 相当陌生 ASP.NET 并且能够在正确的时间传递正确的数据是让我经常束手无策的事情。在大多数情况下,我理解将变量从视图传递到控制器并返回到其他视图。

但我想知道是否有一种方法可以让一些东西,比如说,从任何视图中获取用户的地址?我知道内置User.Identity.Name,这对于检查用户是否在自己的页面上等非常方便。但是,有没有办法让 User 对象具有可在任何地方访问的自定义信息?

我目前正在我的网站上建立一个声誉系统(很像这个网站),其中不同数量的声誉允许您做不同的事情。所以在很多观点中,我需要说"嘿,如果用户有这个声誉,让他们看到这个功能。但是,如果我必须将用户传入每个视图,这将非常乏味。

有什么想法吗?

使变量在 MVC 3 中普遍 ASP.NET 可访问

我想你正在寻找HttpContext.Session。

如果需要有关会话和 MVC 的详细信息 ASP.NET 请查看本文,以更好地了解会话在请求期间何时可用。

您可以将自定义类对象保留为 Session。会话将跨请求提供。

假设你有这样的类

public class LoggedInUser
{
  public string DisplayName { set;get;}
  //Other relevant properties. relevant only not everything !
}

您可以像这样将其存储在会话中

LoggedInUser objLoggedInUser=new LoggedInUser();
objLoggedInUser.DisplayName="Johnson";
Session["LoggedUser"]=objLoggedInUser;

现在,无论您在哪里想要这个,您都可以像这样从会话中读取它

LoggedInUser objLoggedInUser;
if(LoggedInUser objLoggedInUser=!=null)
{
  objLoggedInUser=(LoggedInUser)Session["LoggedUser"];
  // Now you can access objLoggedInUser.DisplayName
}

我会将此功能包装到一个函数中,并调用该函数以获取我想要的任何数据。