【问题标题】: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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多