Как изменить 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 для модели.

Как здесь:

ASP.NET MVC ActionResult View () не меняет URL

То, что вы хотели бы сделать, это вместо того, чтобы публиковать его в "Обновлении", публиковать в том же действии, что и вы, но пометить [HttpPost], как показано ниже

[HttpPost]
public ActionResult Edit(SomeViewModel someViewModel) {
   is(ModelState.IsValid)
    {
        ...
        return RedirectToAction("List");
    }
     return View(myEntity);
}

Методы с HttpPost будут вызываться только тогда, когда браузер обнаружит запрос "Post". Когда пользователь вводит URL через браузер, это запрос "Получить", и поэтому будет вызвано другое действие "Изменить".

Другие вопросы по тегам