Как избежать использования TempData
Я новичок в asp.net mvc, поэтому, пожалуйста, потерпите меня.
Я использую TempData, когда перенаправляю на другое действие, и не хочу "портить" URL-адрес информацией. Например:
[AllowAnonymous]
public ActionResult ConfirmationEmailSent()
{
if (TempData["Username"] != null)
{
ViewBag.Username = TempData["Username"];
return View("ConfirmationEmailSent");
}
return View("Error");
}
Пока все хорошо, пользователь получает простую и невинную веб-страницу с сообщением, содержащим его имя пользователя. Но если пользователь нажимает кнопку "обновить", он получает представление "Ошибка", потому что TempDate недоступен. Я хотел бы иметь возможность перенаправить на действие с информацией, не представленной в строке запроса, а также, что если пользователь нажимает кнопку обновления, он получает ту же страницу. Есть идеи, как это сделать? (без сессии)
Спасибо.
2 ответа
Похоже, куки будут делать то, что вы хотите. Затем просто удалите их, когда вы закончите (или не устанавливайте для них дату истечения срока действия, в этом случае браузер удалит их для вас после завершения сеанса).
То, что вам нужно, - это способ сохранения информации по нескольким запросам способом, связанным с браузером. QueryString и Session - ваши два лучших варианта.
Если представление является результатом публикации формы, вы можете сделать это скрытым вводом, но пользователь получит подсказку при обновлении (вы хотите повторно отправить форму?), Но это не хорошо, как и следует делать сообщение / перенаправление / получение (PRG).
Erick