Asp.net mvc 4 ASP.Net MVC控制器构造函数显示错误System.Web.MVC.Controller.Session.get返回空值

Asp.net mvc 4 ASP.Net MVC控制器构造函数显示错误System.Web.MVC.Controller.Session.get返回空值,asp.net-mvc-4,session,model-view-controller,constructor,Asp.net Mvc 4,Session,Model View Controller,Constructor,基本上,我想从许多企业中筛选当前业务的客户,我想在一个地方(构造器)完成。这样我就可以方便地查询控制器其余部分的db.Customers。但是当我使用(雇员)会话[“当前用户”];它显示错误 System.Web.Mvc.Controller.Session.get返回空值 public class SOSRController : Controller { private BusinessContext db = new BusinessContext();

基本上,我想从许多企业中筛选当前业务的客户,我想在一个地方(构造器)完成。这样我就可以方便地查询控制器其余部分的db.Customers。但是当我使用(雇员)会话[“当前用户”];它显示错误

System.Web.Mvc.Controller.Session.get返回空值

public class SOSRController : Controller
    {
        private BusinessContext db = new BusinessContext();
        public SOSRController()
        {
            Employee employee= (Employee)Session["CurrentUser"];
            db.Customers = (DbSet<Customer>) db.Customers.AsQueryable().Where(x => x.Business.Id == employee.bizId);
        }
        public ActionResult Index()
        {
            List<Customer> LstCust= db.Customers.Where(x => x.Name.Contains("asd")).ToList();
        }
}
公共类SOSRController:Controller
{
private BusinessContext db=新的BusinessContext();
公共SOSRController()
{
员工=(员工)会话[“当前用户”];
db.Customers=(DbSet)db.Customers.AsQueryable(),其中(x=>x.Business.Id==employee.bizId);
}
公共行动结果索引()
{
列出LstCust=db.Customers.Where(x=>x.Name.Contains(“asd”)).ToList();
}
}

或者,还有什么其他的解决方案可以只在一个地方过滤db.客户呢?

它奏效了。我重写了Initialize方法,现在我可以得到会话值了。构造函数是类的概念,初始化是MVC的概念

protected override void Initialize(RequestContext requestContext)
        {
            base.Initialize(requestContext);

             Employee employee= (Employee)Session["CurrentUser"];
            db.Customers = (DbSet<Customer>) db.Customers.AsQueryable().Where(x => x.Business.Id == employee.bizId);

        }
受保护覆盖无效初始化(RequestContext RequestContext)
{
初始化(requestContext);
员工=(员工)会话[“当前用户”];
db.Customers=(DbSet)db.Customers.AsQueryable(),其中(x=>x.Business.Id==employee.bizId);
}