2010-01-22 77 views
15

在ASP.NET MVC中實現Post/Redirect/Get模式的最佳做法是什麼?特別是當你想重定向回初始動作/控制器時,最好的辦法是什麼?在ASP.NET MVC中發佈/重定向/獲取模式MVC中的模式

這裏是我當前如何這樣做:

  1. 顯示形式的用戶。
    • 在表單中,使用<%= Html.Hidden("returnUrl") %>
    • 在操作中,使用ViewData["returnUrl"] = Request.Url;
  2. 用戶通過POST
  3. 重定向提交表單到returnUrl模型結合,如果不是null。否則,重定向到主頁。

這樣就完成了工作,但感覺這樣會導致很多重複。我也意識到,我可能重定向到Request.UrlReferrer ...

你認爲什麼是最乾淨,最理想的方法來實現這個?

回答

11

你這樣做的方式沒有問題,但看起來你可能會稍微偏執一點。你的POST動作是否從多個表單中獲取表單文章?如果沒有,爲什麼還要隱藏表單域?您可以通過簡單的方式獲得RedirectToAction("MyAction")

+0

目前,我不會從多個表單中獲取表單發佈 - 所以我絕對看到您的觀點。在這種特殊情況下,我可能只是使用RedirectToAction。但是,如果我確實有多個表格,您是否仍然建議我通過我現在的方法來做? – Charles 2010-01-23 10:27:29

3

通常,處理POST的操作知道在成功提交時需要重定向的位置。因此,實施RGP的每個操作都可以簡單地調用RedirectToAction(string)

public ViewResult Edit(string email) 
{ 
    // save the email 
    return RedirectToAction("Edit"); 
}