2012-01-19 5 views
1

Мне нужно получить доступ к UserId от всех моих ASP.NET MVC приложения для того, чтобы использовать его для скрытия/показать некоторые элементы:Как разделить переменную между представлениями ASP.NET MVC

идента первичный ключ пользователя таблицы (на SQL-сервере).

в нормальном asp.net я использовал BasePage: Страница и добавил:

public long FinKaynUserId 
{ 
    //long FinKaynUserId = 0; 
    get 
    { 
     if (HttpContext.Current.Session["FinKaynUserId"] != null && Convert.ToInt64(HttpContext.Current.Session["FinKaynUserId"]) != 0) 
      return Convert.ToInt64(HttpContext.Current.Session["FinKaynUserId"]); 
     else 
     { 
      HttpCookie myCookie = HttpContext.Current.Request.Cookies["FinKaynUserId"]; 
      if (myCookie != null) 
      { 
       HttpContext.Current.Session["FinKaynUserId"] = Convert.ToInt64(myCookie.Value); 
       // Session["User"] = (new UserManager()).GetUser(Convert.ToInt64(Session["UserId"])); 
       return Convert.ToInt64(HttpContext.Current.Session["FinKaynUserId"]); 
      } 
      else 
       return 0; 
     } 
    } 
    set 
    { 
     HttpCookie cookie = new HttpCookie("FinKaynUserId"); 
     cookie.Value = value.ToString(); 
     cookie.Secure = false; 
     cookie.Expires = DateTime.Now.AddDays(3); 
     HttpContext.Current.Request.Cookies.Add(cookie); 
     HttpContext.Current.Session["FinKaynUserId"] = value; 
    } 

} 

Как я могу сделать то же самое в ASP.NET MVC.

+0

я хочу поделиться UserId между видами .Ели сессию истек, проверь кук , –

+0

Вот еще одно соответствующее сообщение с рекомендациями MVC: http://stackoverflow.com/questions/5286301/how-do-you-access-application-variables-in-asp-net-mvc-3-razor-views –

+0

Вы все еще могут использовать переменные Session в приложениях ASP.NET MVC, но я предлагаю использовать встроенную asp.net FormsAuthentication вместо управления сессиями и куки-файлами самостоятельно – sos00

ответ

-1

Один из вариантов для хранения переменной в контексте приложения:

Application["FinKaynUserId"] = value; 

И тогда вы можете просто получить его в другом разделе кода, как это:

if (Application["FinKaynUserId"] != null) 
{ 
    long FinKaynUserId = (long)Application["FinKaynUserId"]; 
} 
+1

Прикладные переменные - это глобальные переменные, которые разделяются во всех запросах, поэтому не стоит хранить идентификатор пользователя. Вместо этого используйте переменные сеанса – sos00

+0

Это переменная session.not. –

+0

@ user594166 мой комментарий был о ответе Стаса и использовании приложения ["FinKaynUserId"] – sos00

0

Если использование переменного находится на уровне сеанса, то используйте: Session["Variable"]="value"; Или же, если использование находится через приложение, а затем использовать: System.Web.HttpContext.Current.Application["Variable"]="value";

Смежные вопросы