@{
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")
此代码在视图中创建会话时抛出异常。但是我可以在控制器中创建会话。
答案 0 :(得分:2)
您需要将其放在代码块中
@{ Session["username"]="shahed"; }
....
<h3>@Session["username"].ToString()</h3>
答案 1 :(得分:1)
虽然在视图中设置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()
仍然是Session["username"]
,下一行会在null
上抛出NRE。