Asp.net mvc ASP.NET MVC 1-在ViewModel中调用会话对象

Asp.net mvc ASP.NET MVC 1-在ViewModel中调用会话对象,asp.net-mvc,Asp.net Mvc,如何在ViewModel中调用会话?“会话[…]”或“HttpContext.Session[…]”的引用在此上下文中不存在一般的想法是您“不应该” 控制器应提供视图所需的所有信息 但是,将会话(或会话的一部分)与ViewModel一起传递可能是值得的 我处理这个问题的方式是,我为所有能够访问控制器的视图模型都提供了一个基类。然后,他们可以直接从会话查询控制器中的特定对象,而无需将会话直接公开给视图 BaseView.cs public abstract class BaseView<TM

如何在ViewModel中调用会话?“会话[…]”或“HttpContext.Session[…]”的引用在此上下文中不存在

一般的想法是您“不应该”

控制器应提供视图所需的所有信息

但是,将会话(或会话的一部分)与ViewModel一起传递可能是值得的

我处理这个问题的方式是,我为所有能够访问控制器的视图模型都提供了一个基类。然后,他们可以直接从会话查询控制器中的特定对象,而无需将会话直接公开给视图

BaseView.cs

public abstract class BaseView<TModel> : SparkView<TModel> where TModel : ControllerResponse
{
    // Stuff common to all views.
}
试一试


此上下文中不存在对“HttpContext…”的引用抱歉,使用System.Web调用“System.Web”/“using System.Web;”我可以获取会话或者忘记添加完全限定的名称。很高兴听到您让它工作了。+1作为答案,在我的例子中,因为这是一个对应于“ascx”的ViewModel,更简单(不正确),调用System.Web.HttpContext.Current.Session。非常感谢。
public class ControllerResponse
{
    private BaseController controller = null;

    private ControllerResponse() { }

    public ControllerResponse(BaseController controller)
    {
        this.controller = controller;
    }

    // Here, you would place all of the methods that the BaseView should have access to.
}
HttpContext.Current.Session[..]