2012-03-20 2 views
2

Предположим, у меня есть простой ASP MVC3 список контроллер с add метод с параметром id.ASP MVC 3 предотвращает множественные вставки на странице обновления

Список:

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/ 

Вы знаете какой-либо способ сделать это?

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

ответ

3

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

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

+1

@Vinzz: FYI это также известно как ** Post-Redirect-Get ** pattern. SO, если вы будете искать дополнительную информацию об этом, убедитесь, что вы запросили этот термин ... +1 к вам Rhapsody ... –

+0

Спасибо за ответ, который можно использовать непосредственно, а также за предложение POST. – Vinzz

2

Вот почему вы должны использовать PRG: Post-Redirect-Get когда вы делаете любой такой формы пост.

Посмотрите here.

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

+0

Спасибо, что указали узор, действительно интересный материал – Vinzz

Смежные вопросы