Asp.net-Mvc
asp mvc:指定視圖名稱不會更改 url
我的控制器中有一個用於 HttpPost 的創建操作。在該操作中,我將記錄插入數據庫,然後返回一個指定不同操作名稱的視圖,因為我想將使用者帶到其他地方,例如他們剛剛創建的記錄的詳細資訊視圖,然後我傳入目前模型,因此我不必重新載入他們剛剛輸入的數據。不幸的是,地址欄中的 url 仍然顯示原始的創建操作。
[HttpPost] public ActionResult Create(MyModel model) { //Insert record ... //Go to details view, pass the current model //instead of re-loading from database return View("Details", model); }如何讓網址顯示“ http://myapp/MyController/Details/1 ”,而不是“ http://myapp/MyController/Create/1 ”?有可能嗎,還是我必須做重定向?我希望我可以避免重定向…
我認為您想使用
RedirectToAction()而不是View(). 看看下面的問題:How to RedirectToAction in ASP.NET MVC without lost request data
您必須進行重定向才能更改瀏覽器中的 URL。
您傳入的視圖名稱只是告訴 MVC 要渲染哪個視圖。這是您的應用程序的實現細節。
程式碼看起來像:
[HttpPost] public ActionResult Create(MyModel model) { //Insert record ... return RedirectToAction("Details", new { id = model.ID }); }您想要在此處進行重定向的原因之一是使用者可以點擊瀏覽器中的刷新按鈕,而不會出現討厭的“您想再次發布數據”對話框。
這種行為通常被稱為“Post-Redirect-Get”,或者簡稱為“PRG”。有關 PRG 的更多資訊,請參閱 Wikipedia 文章:發布/重定向/獲取