2009-06-22 66 views
8

考慮以下路線:爲什麼ASP.NET MVC忽略我的尾部斜槓?

routes.MapRoute(
     "Service", // Route name 
     "service/", // URL with parameters 
     new {controller = "CustomerService", action = "Index"} // Parameter defaults 
     ); 

使用Url.Action("Service", "CustomerService")產生的/service而不是預期的/service/

的網址有沒有什麼辦法讓這個工作,還是我不得不求助於實現我自己從RouteBase派生的路由?

+3

我可以問一下爲什麼這個很重要?就瀏覽器而言,他們並不在意。至於根據這條路線建立自己的路線網址,尾隨/將在需要時自動添加。 – 2009-06-22 12:50:36

+0

我只是想讓我的網站與使用帶有斜槓的網址的舊版網站一致。理論上我知道這並不重要,但對於遺產來說它確實如此。 :) – andreialecu 2009-06-22 13:06:24

+1

不過,真的沒有理由打擾 - 即使是遺產。如果尾部斜線全部不同,則沒有區別。所有舊的網址都是有效的,所有新的網址都將與舊的位置一起工作。 – 2009-06-22 13:11:38

回答

-5

在你的頁面加載事件中添加:

Dim rawUrl As String = HttpContext.Current.ApplicationInstance.Request.RawUrl 
If Not rawUrl.EndsWith("/") Then 
    HttpContext.Current.ApplicationInstance.Response.RedirectPermanent(String.Format("~{0}/", rawUrl)) 
End If 
+5

這不是問題所在,另外,mvc中沒有頁面加載事件。 – andreialecu 2012-08-02 11:26:36