2013-09-04 4 views
0

Я хочу изменить значение файла cookie после запуска события изменения выпадающего меню.Значение настройки jQuery сеанса

У меня есть MVC приложение, с помощью следующего кода на базовом контроллере:

public class CustomController : Controller 
{ 
    HttpCookie mYcookie = new HttpCookie("trycookie"); 
    HttpCookie cookieCounter = new HttpCookie("cookieCounter"); 

    protected override void OnActionExecuted() 
    { 
     if (cookieCounter.Value == null) 
     { 
      mYcookie.Value = "tryvalue"; 

     // do something here // 
     } 
    } 
} 

Что это сделать, это создать экземпляр куки один раз в запуске приложения. Тогда у меня есть JQuery манипулировать печенье:

$.cookie("mYcookie", "tryvaluehere"); 
$.cookie("cookieCounter", "tryvaluehereagain"); 

Моя проблема здесь всякий раз, когда я отладки на моем C# код, значение моих Куки «». Но всякий раз, когда я пытался предупредить печенье на том же коде Jquery, я получаю значение, которое я хотел

alert($.cookie("mYcookie")); 

создается снова, даже если я объявить их вне моего метода мой HttpCookie экземпляр? Любые предложения с радостью будут оценены. Заранее спасибо!

ответ

0

Вы должны прочитать кук из запроса:

public class CustomController : Controller 
{ 
    protected override void OnActionExecuted() 
    { 
     HttpCookie myCookie = this.Request.Cookies["trycookie"]; 
     HttpCookie cookieCounter = this.Request.Cookies["cookieCounter"]; 

     if (cookieCounter != null) 
     { 
      // do something here // 
     } 
    } 
} 

или если вы хотите установить кук затем создать новый экземпляр печенья и добавить его в ответ:

HttpCookie cookie = new HttpCookie("name", "some value"); 
this.Response.Cookies.Add(cookie); 
+0

Я сделал 'this.Request.Cookies', но они равны нулю. Я считаю, что это первый запуск кода, потому что пользователь не инициировал событие на стороне клиента. – Gerald

+0

Да, это нормально. 'this.Request.Cookies [" trycookie "]' будет иметь значение, в котором будет отправлен куки-файл. Если вы устанавливаете cookie в javascript, тогда совершенно нормально, что по первому запросу их не будет. –

+0

Как я могу сделать этот «cookie» доступным при первом запуске? – Gerald

1

То, что я сделал, это создать экземпляр файла cookie из запроса. Если запрос имеет значение null, создайте этот файл cookie как новый файл cookie.

public class CustomController : Controller 
{ 
    HttpCookie mYcookie = this.Request.Cookies["trycookie"]; 
    HttpCookie cookieCounter = this.Request.Cookies["trycookie"]; 

    protected override void OnActionExecuted() 
    { 
     if (cookieCounter == null) 
     { 
      mYcookie = new HttpCookie("somenamehere"); 
     } 
     else 
     { 
     // do something here // 
     } 
    } 
} 
Смежные вопросы