Я реализую ASP.NET MVC post/redirect/getpattern на веб-сайте Azure. Когда пользователь создает новый объект, он перенаправляется из представления create в представление редактирования с новым идентификатором объекта как частью URL-адреса.Является ли TempData лучшим местом для хранения сохраненного сообщения успешно или безуспешно?
У объекта есть довольно много полей, поэтому нередко многократно сохранять и убеждать пользователя в сохранении их данных. Мы показываем сообщение «Сохранено успешно» с помощью javascript.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Branch branch, int orgs)
{
if (ModelState.IsValid)
{
// model is valid, save it and redirect to edit
_branchRepository.Save(branch);
TempData["Message"] = new NotificationViewModel(NotificationSeverity.Success,
"Saved",
"Saved successfully");
return RedirectToAction("Edit", new { id = branch.Id });
}
// model is invalid, don't save it, let them have another go
TempData["Message"] = new NotificationViewModel(NotificationSeverity.Warning,
"I'm sorry, Dave.",
"I'm afraid I can't do that.");
ModelState.Clear();
return View("Edit", branch);
}
Мое понимание TempData является то, что все данные, сохраненные в TempData будут вокруг жизни текущего запроса, и только следующий запрос (или пока элемент не будет удален явно) и является лучшим местом для размещения данных, которые вы хотите передать другое представление, к которому вы будете перенаправлять.
Is TempData - лучшее место для этого сообщения?
Примечание. Я прочитал, что если вы загружаете балансировку своих веб-серверов, чтобы активировать Sticky Sessions. Запускает ли Azure автоматическое использование липких сеансов или вам нужно вручную настроить это?
Это хороший вопрос о Azure и Get. Чтобы быть в безопасности, я предпочитаю передавать необязательный параметр в метод Redirect, а не использовать TempData. Мне будет интересно посмотреть, что публикуют другие. –
По умолчанию TempData основан на сеансе, но вы можете предоставить пользовательскую реализацию TempDataProvider, которая может хранить параметры в URL, Cookies или где-то еще –
Neil, добавляет ли дополнительный параметр в URL-адрес? Если да, и я добавляю этот URL-адрес, не приведет ли сообщение «сохранено успешно» к каждому открытию этой закладки? –