2012-03-20 47 views
2

比方說我有一個簡單的ASP MVC3 列表控制器,用方法,帶有一個id參數。ASP MVC 3防止在頁面刷新多重插入

列表:

http://localhost/MVCAPP/ListFoo/ 

Add方法

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

在我的添加方法,更新我的視圖模型與添加的元素,然後進行調用:

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這也被稱爲**後重定向獲取**模式。因此,如果您要查找有關它的其他信息,請確保您查詢此術語... +1給您Rhapsody ... – 2012-03-20 13:54:12

+0

感謝您直接使用的答案,以及POST建議。 – Vinzz 2012-03-20 14:04:43

2

這就是爲什麼你需要使用PRG後重定向 - 獲取當你做任何這樣的形式發佈。

看一看here

所以最好的選擇是重定向用戶在GET方法來顯示頁面。

+0

感謝您指出模式,真正有趣的東西 – Vinzz 2012-03-20 14:05:05