Css 如何清除Asp.NETMVC';离开网页时的会话变量?

Css 如何清除Asp.NETMVC';离开网页时的会话变量?,css,asp.net-mvc,session,Css,Asp.net Mvc,Session,这是我的方法 public ActionResult Index() { if (Session["visited"] ==null|| (int)Session["visited"] != 1) { Session["visited"] = 0; } return View(); } 我在视图中使用它来检查会话变量以加载动画的样式表。这是我在_布局页面中的代码,用于将css样式表注入布局

这是我的方法

 public ActionResult Index()
    {
        if (Session["visited"] ==null|| (int)Session["visited"] != 1)
        {
            Session["visited"] = 0;
        }
        return View();
    }
我在视图中使用它来检查会话变量以加载动画的样式表。这是我在_布局页面中的代码,用于将css样式表注入布局

@if(Session["visited"]!=null&&(int)Session["visited"]==0)
    {
        @Html.CreateStyleSheet();
        Session["visited"] = 1;
    }
嘿,伙计们,在解决这个问题之前,我想说的是,我想知道如何在退出页面时清除会话数据。没有别的了。所以不要想太多

我想知道如何在退出页面时清除会话数据

实际上没有“退出页面”事件。您可以在呈现页面时最后一次清除这些值,也可以在请求另一个页面时第一次清除这些值。执行此操作的代码行是:

Session.Clear()
因此,如果这应该在呈现页面的末尾完成,那么只需将其添加到视图的末尾即可。(如果应该在每个页面的末尾执行,那么将其添加到布局视图的末尾。)这里的想法是,视图可能是服务器端执行的最后一个代码(除了不使用您的值的框架内部代码),因此视图中的最后一行是您控制的最后一行



然而,请注意,这没有什么意义。如果不希望会话数据从一个页面持续到下一个页面,那么首先就不应该使用会话状态。如果每次都清除该值,则实际上不会跟踪会话中的任何内容。

为什么要在离开页面时清除会话?会话状态的全部要点是跨页面请求存在。我想您可以在视图末尾的某个代码块中清除会话,因为这可能是代码中执行的最后一件事,但仍然没有意义。听起来您实际上在寻找模型或查询字符串参数。会话存储在服务器上。离开页面发生在客户机上,而服务器从未收到通知。最困难的部分是通知服务器客户端已离开页面。据我所知,没有干净简单的方法可以做到这一点。唯一的方法是绑定到类似
onunload
的东西,并向MVC操作发送AJAX请求(Web API操作无法工作,因为它无法访问会话)。您还需要使AJAX请求同步。如果您只想删除单个项目,如“已访问”,则应使用
会话。删除(“已访问”)