А ты не усложняешь всё, случаем?
RPG обычно делается так:
[HttpGet]
public ActionResult A()
{
return View(new Model());
}
[HttpPost]
public ActionResult A(Model model)
{
if(!ModelState.IsValid)
return View(model);
return RedirectToAction(MVC.ThisController.C);
}
[HttpGet]
public ActionResult C()
{
return View();
}
Если очень надо, чтобы имя Action'а куда постим отличалось от А, то вместо
return View(model)
пишем
return View("A", model)
Здравствуйте, Ocenochka, Вы писали:
O> Две типовых проблемы:
O> 1. Как правильно сделать "Post-Redirect-Get"?
O> Более подробно: есть две страницы A.mvc и C.mvc и три метода в контроллере A(), B(), C().
O> Методы A() отдает вьюху с формой, метод C() успешный результат post'а формы.
O> На метод B() post'ятся данные формы.
O> Алгоритм работы:
O> 1) Переходим на A.mvc — рендерится форма.
O> 2) Пользователь забивает поля формы и постит на B().
O> 3) В B() происходит серверная валидация и если
O> результат отрицательный, то редирект на A() с сохранением состояния модели, чтобы отрендерить ошибки валидации;
O> если результат валидации положительный, то редирект на C().
O> В стандартном MVC не нашел средств упрощающих такую реализацию, а в MvcContrib реализация не логичная на мой взгляд,
O> поэтому написал пока пару своих фильтров для сохранения/загрузки модели, но приходится перед редиректом на C() очищать
O> состояние модели в Temp'е, иначе после C() пользователь может перейти на A() и увидеть старые ошибки валидации.
O> В общем, простого и лаконичного решения я не нашел.
O> Покажите, пожалуйста, образцовый код, который делает это минимумом движений.
O>2. Есть модель формы, по которой нужно генерировать кастомную (в каждом проекте) разметку.
O> Хочется на каждый тип проперти модели написать фрагмент верстки и отдавать на рендеринг просто объект модели, а вся работа по
O> генерации нужной верстки проходила бы "за сценой".
O> Сюда же хочется возможность прикрутить клиентскую валидацию по серверный атрибутам модели.
O>зы Может вопросы и детские, но я уже замучался гуглить.