Есть еще один способ избежать темпданных. Шаблон, который мне нравится, включает создание 1 действия как для исходного рендера, так и для рендеринга недопустимой формы. Это выглядит примерно так:
var form = new FooForm();
if (request.UrlReferrer == request.Url)
{
// Fill form with previous request's data
}
if (Request.IsPost())
{
if (!form.IsValid)
{
ViewData["ValidationErrors"] = ...
} else {
// update model
model.something = foo.something;
// handoff to post update action
return RedirectToAction("ModelUpdated", ... etc);
}
}
// By default render 1 view until form is a valid post
ViewData["Form"] = form;
return View();
Это шаблон более или менее. Немного псевдой При этом вы можете создать 1 представление для обработки отображения формы, повторного отображения значений (поскольку форма будет заполнена предыдущими значениями) и отображения сообщений об ошибках.
При публикации этого действия, если оно действительно, оно передает управление другому действию.
Я пытаюсь упростить этот шаблон в .net платформе проверки , поскольку мы создаем поддержку MVC.