У меня есть контроллер, как это:Как получить значение переменной сеанса и установить в переменной контроллера?
public class LoginController : Controller
{
private Int32 _companyID;
// My actions
}
Эта переменная _companyID должна (очевидно) содержит идентификатор компании, и это значение в настоящее время на сессии. Я хочу получить это значение и установить его в переменной контроллера.
Редактировать: Я использую эту переменную, потому что мне нужно проверить некоторые вещи об этом значении из сеанса, и я не хочу дублировать этот код во всех действиях. Вместо этого я просто хочу проверить, что мне нужно, установить это значение в переменной и использовать его внутри моих действий.
В WebForms я просто получил значение из сеанса в событии загрузки страницы, и это будет сделано. Но в MVC я не знаю, как я это делаю.
Моя первая мысль была получить это значение в конструкторе, что-то вроде этого:
public LoginController()
{
_companyID = Convert.toInt32(Session["companyID"]);
}
Но я обнаружил, что сессия не может быть доступна на конструкторах (это был пустой для меня).
Тогда я подумал об использовании фильтров, но мне не удалось выяснить, как установить значение в переменной контроллера. Я пытался таким образом:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
Int32 _companyID = Convert.toInt32(HttpContext.Current.Session["idEmpresa"]);
// I couldn't pass this value directly to the controller variable
}
Я видел несколько способов передачи значений из фильтров в контроллеры, но все они подразумевают в дополнительном коде в своих действиях, чтобы получить это значение из фильтра, и Я не хочу этого. Я бы хотел, чтобы я мог получить желаемое значение без изменений за каждое действие, которое у меня есть или будет.
Есть ли способ получить это?
Я надеюсь, что мой вопрос достаточно ясен. Заранее спасибо!
Я понимаю вашу точку зрения, но я должен проверить некоторые вещи об этом значении с сеанса (я забыл упомянуть об этом в своем вопросе, извините), и я не хочу дублировать этот код при каждом действии. Я хочу где-то отделить этот код и просто использовать значение в переменной контроллера в своих действиях. Я могу сделать это? –
Затем выведите код в частный метод на контроллере и вызовите этот частный метод в каждом действии. –
Я думал, что был бы способ сделать это, не изменяя все мои действия. Так нет? –