Как обрабатывать данные сеанса в ASP.NET MVC - PullRequest
2 голосов
/ 22 марта 2009

Допустим, я хочу сохранить переменную с именем language_id в сеансе. Я думал, что смогу сделать что-то вроде следующего:

public class CountryController : Controller
{ 
    [WebMethod(EnableSession = true)]  
    [AcceptVerbs(HttpVerbs.Post)]  
    public ActionResultChangelangue(FormCollection form)
    {
        Session["current_language"] = form["languageid"];
        return View();    
    } 
}

Но когда я проверяю сессию, она всегда равна нулю. Как так? Где я могу найти некоторую информацию об обработке сессии в ASP.NET MVC?

Ответы [ 3 ]

12 голосов
/ 25 марта 2009

Не строго относится к самому вопросу , но, скорее, для того, чтобы держать контроллеры (разумно) строго типизированными и чистыми, я бы также порекомендовал класс Session фасад, подобный классу, который заключает в себе любую информацию о сеансе, чтобы вы хорошо читали и писали.

Пример:

public static class SessionFacade
{
  public static string CurrentLanguage
  {
    get
    {
      //Simply returns, but you could check for a null
      //and initialise it with a default value accordingly...
      return HttpContext.Current.Session["current_language"].ToString();
    }
    set
    {
      HttpContext.Current.Session["current_language"] = value;
    }
  }
}

Usage:

public ActionResultChangelangue(FormCollection form)
{
  SessionFacade.CurrentLanguage = form["languageid"];
  return View();
} 
1 голос
/ 22 марта 2009

Должно работать, но это не рекомендуемая стратегия. Может быть, состояние сеанса отключено в IIS или ASP.NET? См. этот ответ и его комментарии .

0 голосов
/ 22 марта 2009

Возможно, вам также потребуется включить сеанс в файле web.config. Также здесь есть статья о состоянии сеанса и его значении:

http://www.davidhayden.com/blog/dave/archive/2008/02/06/ASPNETMVCFrameworkSessionStateStateValueWCSF.aspx

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...