因此,当您使用Java创建网站时,您会有一个名为Session的内容,在该会话中,只要该浏览器会话正在进行,您就可以存储所需的任何信息。
我使用ASP.NET MVC 3并且能够在正确的时间传递正确的数据是相当新的,这让我经常被束缚。在大多数情况下,我理解将变量从视图传递到控制器并返回到其他视图。
但我想知道是否有办法让某些东西允许让我们说,从任何视图中获取用户的地址?我知道内置了User.Identity.Name
,这对于检查用户是否在他们自己的页面上非常方便,等等。但是有没有办法让User对象具有可在任何地方访问的自定义信息?
我目前正在努力在我的网站上建立一个声誉系统(很像这个网站),不同的声誉可以让你做不同的事情。因此,我需要说很多观点"嘿,如果用户有这个声誉,让他们看看这个功能。"但是,如果我必须将用户传递到每个视图中,这是非常繁琐的。
有什么想法吗?
答案 0 :(得分:1)
我认为你正在寻找HttpContext.Session。
如果您想了解有关会话和ASP.NET MVC的更多信息,请查看this article以更好地了解会话在请求期间何时可用。
答案 1 :(得分: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
}
我会将此功能包装到一个函数中并调用该函数以获取我想要的数据。