Как изменить URL на основной вид при возврате вида из-за ошибок валидации в шаблоне PRG
Я заметил, что когда view
возвращается из-за validation errors
URL все еще указывает на action
что сделал validation
:
например в Edit View
есть форма для Update
действие:
@Html.BeginForm("Update","MyController",FormMethod.Post,new{})
{
...
}
Обновить действие:
public ActionResult Update(Entity myEntity)
{
is(ModelState.IsValid)
{
...
return RedirectToAction("List");
}
return View("Edit",myEntity);
}
когда validation
не в состоянии это показывает Edit view
снова с ошибками, но адрес
.../Update
я делаю что-то не так? как это исправить?
2 ответа
am I doing something wrong ? how to fix this ?
Вот как это работает, вы можете попробовать RedirectToAction
с TempData
для модели.
Как здесь:
То, что вы хотели бы сделать, это вместо того, чтобы публиковать его в "Обновлении", публиковать в том же действии, что и вы, но пометить [HttpPost], как показано ниже
[HttpPost]
public ActionResult Edit(SomeViewModel someViewModel) {
is(ModelState.IsValid)
{
...
return RedirectToAction("List");
}
return View(myEntity);
}
Методы с HttpPost будут вызываться только тогда, когда браузер обнаружит запрос "Post". Когда пользователь вводит URL через браузер, это запрос "Получить", и поэтому будет вызвано другое действие "Изменить".