#asp.net-mvc-3 #session
#asp.net-mvc-3 #сессия
Вопрос:
В ASP MVC3 RedirectToAction уничтожает данные в сеансе … ПОЧЕМУ?
Рассмотрим этот код.
[HttpGet]
public ActionResult RequestTestExtract()
{
return View(new ExtractRequestViewModel());
}
[HttpPost]
public ActionResult RequestTestExtract(ExtractRequestViewModel viewModel)
{
var currentExtracts = (Session["Extracts"] as Dictionary<string, bool>) ?? new Dictionary<string, bool>();
currentExtracts.Add(viewModel.fileName, false);
Session["Extracts"] = currentExtracts;
// typing
// ?Session["Extracts"]
// in immediate window before RedirectToAction shows a value
// typing it after does not
return RedirectToAction("RequestTestExtract");
}
Если я возвращаю представление вместо перенаправления на действие, в сеансе все еще есть данные, которые я там сохранил.
RedirectToAction важно, поэтому я оставляю пользователя на странице ПОЛУЧЕНИЯ, а не на странице ПУБЛИКАЦИИ, чтобы избежать этого раздражающего диалога с перепостом.
Редактировать:
Это было в верхней части моего контроллера [SessionState(SessionStateBehavior.Только для чтения)] когда я удаляю это, оно ведет себя правильно.
Комментарии:
1. вы пытались использовать
TempData
?2. В чем преимущество использования этого по сравнению с сеансом
3. Если я правильно помню, TemData по-прежнему основана на сеансе.
Ответ №1:
Это было в верхней части моего контроллера [SessionState(SessionStateBehavior.Только для чтения)] когда я удаляю это, оно ведет себя правильно.