ASP .Net& SessionState的

时间:2009-02-25 19:11:02

标签: asp.net-mvc

今天看看MVC来源:

public class MvcHandler:IHttpHandler,IRequiresSessionState

为什么需要SessionState?是不是MVC试图做一些RESTful?

我知道在MVC中使用会话状态的原因是为了传输一些数据(不记得术语但会话状态可以用其他媒介代替)。我认为我的真正问题是:

为什么我不能编写MVC应用程序并指定并可以选择完全关闭会话状态?

1 个答案:

答案 0 :(得分:3)

因为TempData需要它。 TempData就像ViewData一样,除了它将使它一次到视图和返回。要做到这一点,需要一个cookie。

有一种方法可以通过创建一个虚拟对象来解决它,我只是记不起来。

发现它,感谢Kigg

public class EmptyTempDataProvider : ITempDataProvider
{
    public IDictionary<string, object> LoadTempData(ControllerContext controllerContext)
    {
        return new Dictionary<string, object>();
    }

    public void SaveTempData(ControllerContext controllerContext, IDictionary<string, object> values)
    {
    }
}

然后,您必须创建一个基本控制器,并在创建其他控制器时从中派生。

protected BaseController()
{
    TempDataProvider = new EmptyTempDataProvider();
}

这应该允许您禁用会话状态。