将会话变量检索到ASP.NET MVC 4(razor,view)

mic*_*dck 8 asp.net-mvc session-variables asp.net-mvc-4

我用PHP写了很多网站.现在,我必须使用ASP MVC 4(c#)创建网站,我被Sessions困住了.

IE用户应该登录页面,输入他/她的登录名和密码.如果它们是正确的,在控制器中,我用UserId设置会话,如下所示:

Session["UserId"] = 10
Run Code Online (Sandbox Code Playgroud)

此UserId值用于显示PartialViews(登录表单或(登录后)某些应用程序菜单).如何在Razor视图中获取此UserId?

在此之后:

if (Session.UserId == 10) { @Html.Partial("LoggedMenu") }
Run Code Online (Sandbox Code Playgroud)

我有StackOverflow的例外.:/

bal*_*dre 14

你这样做是错的...

Session[<item name>]返回一个字符串,你也应该与一个字符串进行比较,或者转换它,所以,(int)Session["UserId"] == 10或者Session["UserId"] = "10".

您还调用了一个不存在的属性Session.UserId将不存在因为Session就像是一个NameValueCollection中,您可以通过请求调用它是项目名称.

最后,你应该写

@if (Session["UserId"] == "10") { 
    Html.Partial("LoggedMenu"); 
}
Run Code Online (Sandbox Code Playgroud)

你说你正在学习,所以我想指出2个快速的事情:

  • 您应该利用主页http://asp.net/mvc中免费提供的ASP.NET MVC课程(当您阅读"基本视频"时右侧)
  • 创建一个MVC3项目,看看他们是如何做到的,因为它随时可以使用Membership

  • 我相信`Session [<item name>]`返回一个Object而不是一个字符串. (8认同)