Я использую сессионную обертку вот так:
public interface ISessionWrapper
{
// ...
CultureInfo Culture { get; set; }
}
public class SessionWrapper: ISessionWrapper
{
private T GetFromSession<T>(string key)
{
return (T)HttpContext.Current.Session[key];
}
private void SetInSession(string key, object value)
{
HttpContext.Current.Session[key] = value;
}
// ...
public CultureInfo Culture
{
get { return GetFromSession<CultureInfo>("Culture"); }
set { SetInSession("Culture", value); }
}
}
Я могу использовать этот интерфейс в моем контроллере следующим образом:
private readonly ISessionWrapper sessionWrapper = new SessionWrapper();
// ...
ci = new CultureInfo(langName);
sessionWrapper.Culture = ci;
Но как я могу получить доступ к этой оболочке в представлении ниже, чтобы заменить переменную сеанса (прямой вызов)?
@switch (Session["Culture"].ToString())
{
case "fr":
// ...
case "uk":
// ...
}