如何在asp.net mvc中创建会话内部视图?

时间:2015-09-07 05:34:15

标签: c# asp.net-mvc asp.net-mvc-4 session asp.net-mvc-5

@{
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")

此代码在视图中创建会话时抛出异常。但是我可以在控制器中创建会话。

2 个答案:

答案 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。