2010-01-13 29 views
1

在ASP.NET MVC爲什麼當我使用:RedirectToAction返回URL格式囉嗦/不正確

return this.RedirectToAction("Index", "Page", new { pageKey = "test/ho/hum"}) 

或使用MVCContrib擴展:

return this.RedirectToAction<PageController>(c => c.Index("test/ho/hum")) 

格式我回來網址爲:
http://localhost:8882/?pageKey=test%2Fho%2Fhum
而不是:
http://localhost:8882/test/ho/hum

後者是我的路線通常可用的方式,查詢字符串的方法功能,但顯示pageKey並不可取。僅供參考我有一個catch-all路徑設置爲{*pageKey}指向PageController上的Index()。

任何想法爲什麼RedirectToAction將格式化?

+1

你需要包含你的路線供任何人調試。 – 2010-01-13 02:30:48

回答

0

在你的Global.asax.cs文件,嘗試添加下面的路由信息​​:

routes.MapRoute(
      "my customized routing", 
      "Index/Page/{*MyPageKey}", 
      new { controller = "Index", Action = "List", MyPageKey= "" } 
     ); 

你可以得到你所期望的。但是,這可能會在您的應用程序中創建大量的錯誤。所以謹慎使用。

0

ASP.NET路由通過路由列表並找到第一個匹配的路由。在這種情況下,它必須是您匹配的{* pageKey}路線之前的較早路線。

嘗試使用RedirectToRoute,您可以在其中指定路線的名稱以確保只有該路線可以匹配。