2011-02-06 99 views
2

我有一個方法......是基於一些條件ASP.NET MVC的ActionResult查看()不改變URL

[HttpPost] 
public ActionResult Start(SomeViewModel someViewModel) { ... } 

返回之類的東西回報View("Invalid")View("NotFound")View("Run", anotherViewModel)等問題是沒有與我呈現的視圖有關,URL不會更改以反映新的控制器/操作。這在我的視圖想要發佈到其他操作時會出現問題。我怎樣才能解決這個問題?

+0

返回一個的ViewResult(通過調用查看(...))基本上會返回一堆HTML以響應當前請求。如果您想更改URL,即讓瀏覽器從新地址獲取數據,則應返回RedirectResult。這就是Serge的代碼所做的。 – Rune 2011-02-06 22:18:38

回答

8

View(...)方法不要重定向,他們只是渲染當前請求的特定視圖。如果您需要針對您的視圖的形式特定的URL,就可以在控制器/行動的細節傳遞給表單方法:

Html.BeginForm("action", "controller") 

...等

+0

+1表示儘可能明確無法重定向的視圖。 – 2011-02-06 22:16:56

12

如果要更改URL,您需要重定向到與該URL相關聯的動作,如

[HttpPost] 
public ActionResult Start(SomeViewModel someViewModel) 
{ 
    ... 
    return RedirectToAction("SomeOtherAction"); 
} 

行動SomeOtherAction將依次顯示視圖。

+0

如果您使用controller.excute從助手類或global.asax重定向,這將如何工作? – GP24 2015-07-17 14:27:54