1

因此,当您使用 Java 制作网站时,您有一个称为 Session 的东西,只要浏览器会话正在进行,您就可以在其中存储您想要的任何信息。

我对使用 ASP.NET MVC 3 还很陌生,并且能够在正确的时间传递正确的数据,这让我经常感到困惑。在大多数情况下,我理解将变量从视图传递到控制器并返回到其他视图。

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

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

有任何想法吗?

4

2 回答 2

1

我认为您正在寻找HttpContext.Session

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

于 2012-04-17T03:19:55.887 回答
1

你可以保持你的自定义类对象是 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
}

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

于 2012-04-17T03:27:27.587 回答