0

Session_Start 调用和 ActionFilterAttribute 中的 OnActionExecuting 之间的 Session 会发生什么。

出于某种原因,当我设置这样的东西时:

protected void Session_Start(object sender, EventArgs e)
{
    Session["GoToBuyPage"] = true;
}

并尝试在 ActionFilterAttribute 中访问它:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    bool goToPage = (bool)Session["GoToBuyPage"];

它始终为空。任何想法为什么?

4

1 回答 1

-1

没有Session属性ActionFilterAttribute。所以我什至不知道你的代码是如何编译的。以下对我来说非常好:

动作过滤器:

public class FooAttribute: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        bool goToPage = (bool)filterContext.HttpContext.Session["GoToBuyPage"];
        filterContext.Result = new ContentResult
        {
            Content = goToPage.ToString()
        };
    }
}

控制器:

public class HomeController : Controller
{
    [Foo]
    public ActionResult Index()
    {
        return View();
    }
}

Session_Start

protected void Session_Start(object sender, EventArgs e)
{
    Session["GoToBuyPage"] = true;
}
于 2012-07-14T09:46:13.567 回答