Asp.net mvc 将会话变量检索到ASP.NET MVC 4(razor,视图)
我用PHP写了很多网站。现在,我必须用ASP MVC 4(c#)创建网站,我被会话卡住了 即用户应进入登录页面,输入其登录名和密码。如果正确,在controller中,我使用UserId设置会话,如下所示:Asp.net mvc 将会话变量检索到ASP.NET MVC 4(razor,视图),asp.net-mvc,asp.net-mvc-4,session-variables,Asp.net Mvc,Asp.net Mvc 4,Session Variables,我用PHP写了很多网站。现在,我必须用ASP MVC 4(c#)创建网站,我被会话卡住了 即用户应进入登录页面,输入其登录名和密码。如果正确,在controller中,我使用UserId设置会话,如下所示: Session["UserId"] = 10 此UserId值用于显示partialView(登录表单或(登录后)某些应用程序菜单)。如何在Razor视图中获取此用户ID 在此之后,请注意: if (Session.UserId == 10) { @Html.Partial("Logged
Session["UserId"] = 10
此UserId值用于显示partialView(登录表单或(登录后)某些应用程序菜单)。如何在Razor视图中获取此用户ID
在此之后,请注意:
if (Session.UserId == 10) { @Html.Partial("LoggedMenu") }
我遇到了StackOverflow的异常情况:/ 你做错了
Session[]
返回一个字符串,您也应该将其与字符串进行比较或强制转换,因此,(int)Session[“UserId”]==10
或Session[“UserId”]=“10”
您还调用了一个不存在的属性Session.UserId
将不存在,因为Session
类似于NameValueCollection,您可以通过请求将其称为项目名称
最后,你应该写
@if (Session["UserId"] == "10") {
Html.Partial("LoggedMenu");
}
你说你在学习,所以我想指出两件事:
- 您应该利用ASP.NET MVC课程,该课程在主页上免费提供(阅读“基本视频”时,请参见右侧)
- 创建一个MVC3项目,看看他们是如何做的,因为它是现成的,有成员资格
if (Session["pageInitCounter"] == null)
{
Session["pageInitCounter"] = 1;
}
else
{
int counter = Convert.ToInt32(Session["pageInitCounter"]);
counter++;
Session["pageInitCounter"] = counter;
}
视图:
Javascript:
alert($("#pageInitCounter").val());
您可以添加一个ASP或类似的标签吗?在这种情况下,您不应该使用会话。用户ID应该是控制器返回到视图的模型的一部分(或者如果不是模型的一部分,您可以使用ViewBag)。会话是邪恶的,特别是如果您使用云托管。。。注意!您会遇到什么异常?您是否尝试在视图中使用与控制器中相同的会话语法?我相信
Session[]
返回的对象不是字符串。它可以工作,但为什么“@Html.Hidden”(“pageInitCounter”,Session[“pageInitCounter”]),我们可以直接在alert中调用会话?alert()是客户端javascript。您需要将asp服务器变量写入页面,以便javascript能够引用它。跳蚤通过调用@Html.Hidden助手来实现这一点。
@Html.Hidden("pageInitCounter", Session["pageInitCounter"])
alert($("#pageInitCounter").val());