2011-03-07 57 views
1

我使用下面的代碼試圖從http://mywebsite/Home/做一個RedirectToAction:如何使用RedirectToAction重定向到其他控制器的默認動作?

return RedirectToAction("Index","Profile", new { id = formValues["id"] }); 

上面的代碼將成功地把我帶到

http://mywebsite/Profile/Index/223224

我有什麼做的,使重定向到

http://mywebsite/Profile/223224

謝謝您。

我想出瞭如何做到這一點。

首先我必須添加自定義的路由規則:

routes.MapRoute("Profile", "Profile/{id}", new { controller = "Profile", action = "Index", id = UrlParameter.Optional }); 

然後,我可以做到以下幾點:

[AcceptVerbs(HttpVerbs.Post)] 
public RedirectResult Index(FormCollection formValues) 
{ 
    return Redirect("~/Survey/" + formValues["Id"]); 
} 
+1

你能告訴我們你的路線定義嗎? – frennky 2011-03-07 21:44:39

+0

我從來沒有手動定義過一個,所以我假設我正在使用默認路由定義。 – atbebtg 2011-03-07 21:48:47

回答

1

我認爲你可以這樣做:

​​
+0

我試過了,它仍然把我帶到http:// mywebsite/Profile/Index/223224 – atbebtg 2011-03-07 21:40:55

+0

因爲這個原因,我確實有更好的運氣將默認路由定義更改爲/ {controller}/{id}/{行動}。您可能需要第二條路線/ {控制器}/{動作}和一些警衛來幫助確定哪些是正確的。除了最簡單的情況之外,路由並不是一件容易的事情:-) – 2011-03-07 21:54:19

+0

是的,除非是最簡單的情況,否則它絕非易事。我很難學習這一點! :) 不管怎麼說,還是要謝謝你! – atbebtg 2011-03-07 22:00:21

0

假設你的/控制器被命名爲「Home」

Return RedirectToRoute(new {controller="Home",action="Index",id=formValues["id"]}); 

嗯,我想這將仍然是/索引/數量雖然...我不知道如果你可以離開索引位那裏沒有自定義路由。

1

我只是偶然發現了完全相同的問題。得到它通過使用路由名稱重定向解決:

return RedirectToRoute("profile", new { action = "" }); 

所有變量將被記住,所以如果你有網址像/ {X}/{Y} /資料/ {行動}/{ID}你只需要像我一樣清除行動。

相關問題