2015-05-05 1 views
0

Скажем, у меня есть печенье со значением «OLD», то я обновить печенье с помощью следующего кода:Доступ к файлам cookie перед просмотром загружен в MVC5?

var lang = new HttpCookie("lang"); 
lang.Value = "NEW"; 
lang.Expires = DateTime.UtcNow.AddDays(2); 

HttpContext.Current.Response.SetCookie(lang); //set updated cookie value 

var x = HttpContext.Current.Request.Cookies("lang"); 

x будет по-прежнему иметь «OLD» в качестве значения, потому что он не отправляется клиенту. Возможно ли получить обновленное значение без его отправки клиенту в первую очередь?

ответ

0

Проблема

вы устанавливаете печенье в HttpContext.Current.Response и пытается найти его в HttpContext.Current.Request еще до того, как следующий запрос пришел к серверу.

Это не сработает.

Мой Совет

В этом случае, использование куки неверен. У вас есть другие варианты лучше подходят для целей, как -

  1. ViewData
  2. ViewBag
  3. TempData
  4. Session
  5. ViewModel

Ответ

Но если вы все еще хотите использовать cookie таким образом, найдите файл cookie в HttpContext.Current.Response. Я уверен, что вы это получите.

Как это:

var cookieValue = HttpContext.Current.Response.Cookies["OLD"].Value 
0

Если вы не хотите отправлять значение на стороне клиента и хотите использовать только ссылку, вы можете использовать TempData для своей цели. Это может помочь.

0

Я думаю, вы должны искать его в ответе, а не в запросе, потому что запрос - это то, что исходило от клиента.