ASP MVC 3 предотвращает множественные вставки при обновлении страницы - PullRequest
2 голосов
/ 20 марта 2012

Допустим, у меня есть простой контроллер ASP MVC3 list , с методом add , с параметром id.

Список:

http://localhost/MVCAPP/ListFoo/

Добавить метод

http://localhost/MVCAPP/ListFoo/Add?id=1

В моем методе Add я обновляю Viewmodel добавленным элементом, а затем вызываю:

return View("ListFoo", viewModel);

Обновленный список отображается, и все почти нормально.

Проблема в том, что при таком возврате URL-адрес в адресной строке по-прежнему

http://localhost/MVCAPP/ListFoo/Add?id=1

И если пользователь нажмет F5, будет добавлен еще один элемент, который я бы хотел предотвратить.

Я знаю, что могу отфильтровать такое поведение в контроллере, но я бы предпочел перенаправить адресную строку браузера на:

http://localhost/MVCAPP/ListFoo/

Ты знаешь, как это сделать?

Кстати, я не уверен, что попытка контролировать содержимое адресной строки - это правильный способ взглянуть на эту проблему ...

Ответы [ 2 ]

3 голосов
/ 20 марта 2012

Используйте метод Action.RedirectToAction для перенаправления клиента после выполнения работы в контроллере.

Кроме того, вы можете использовать POST в качестве FormMethod для отправки данных на сервер.

2 голосов
/ 20 марта 2012

Именно поэтому вам нужно использовать PRG : Post-Redirect-Get , когда вы делаете любую такую ​​форму сообщения.

Посмотрите здесь .

Так что лучший вариант - перенаправить пользователя на метод GET для отображениястраница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...