【问题标题】:How can I create session inside views in asp.net mvc?如何在 asp.net mvc 的视图中创建会话?
【发布时间】:2015-12-02 14:21:59
【问题描述】:
@{
ViewBag.Title = "Login";
}
<h2>Login</h2>
@Session["username"]="shahed";
@Session["password"]="123";
<div style="height:200px;width:500px;background-color:red;">
<h3>@Session["username"].ToString()</h3>
</div>
@Html.ActionLink("Logout", "Logout", "Login")
此代码在视图中创建会话时抛出异常。但我可以在控制器的操作中创建会话。
【问题讨论】:
标签:
c#
asp.net-mvc
asp.net-mvc-4
session
asp.net-mvc-5
【解决方案1】:
你需要把它放在一个代码块里
@{ Session["username"]="shahed"; }
....
<h3>@Session["username"].ToString()</h3>
【解决方案2】:
虽然在视图中设置Session 数据不是一个好主意,但您可以轻松地做到这一点。
<h2>Login</h2>
@{
// code block - whole statement evaluate
Session["username"]="shahed";
Session["password"]="123";
}
<div style="height:200px;width:500px;background-color:red;">
<h3>@Session["username"].ToString()</h3>
与您的代码的不同之处在于对 Session 的分配是在 @{..} 块(C# 代码)内完成的,您的版本使用 @ 计算 Session["username"] 作为 C# 代码,其余 (="shahed") 作为 HTML标记 - 因此没有进行分配(下一行在 @Session["username"].ToString() 上抛出 NRE,因为 Session["username"] 仍然是 null)。