ASP. Net MVC Конструктор контроллера показывает ошибку System.Web. Mvc .Controller.Session.get вернул null - PullRequest
2 голосов
/ 28 февраля 2020

По сути, я хочу отфильтровать клиентов по текущему бизнесу от многих предприятий, и я хочу сделать это в одном месте (конструктор). Так что я могу легко запросить на db.Customers в остальной части контроллера. Но когда я использую (Employee) Session ["CurrentUser"]; он показывает ошибку

System.Web. Mvc .Controller.Session.get вернул null.

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();
        }
}

Или что может быть любым другим решением фильтрации db.Customers только в одном месте

1 Ответ

1 голос
/ 02 марта 2020

Это сработало. Я переопределил метод Initialize, и теперь я могу получить значение сеанса. Конструктор - это концепция классов, а 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);

        }
...