2012-07-25 31 views
2

我指定路由默認值以下途徑:Asp.net MVC - 在

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

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

和期望以下網址工作

[http://localhost:58658/public] 

由於myRoute2[/public]網址,我指定控制器和操作的默認值,但這似乎不起作用。有任何想法嗎 ?

感謝

+0

純猜測:把'public/{controller}/{action}/{id}的'/'infront' – Dmitry 2012-07-25 09:37:17

+0

路由URL不能以'/'或'〜'開頭,並且不能包含'? 「字符。 – haroonxml 2012-07-25 09:48:57

回答

2

更改路由聲明的順序,您的第一條(默認)路由匹配url並搜索PublicController。

+0

感謝改變訂單的作品。 – haroonxml 2012-07-25 10:29:30

0

你不應該把大括號圍繞公衆對你的路線,因爲它是諾塔參數。

+0

我之前公開過{public},但仍然無效。 – haroonxml 2012-07-25 09:31:21

3
routes.MapRoute(
      "myRoute1", 
      "public/{controller}/{action}/{id}", 
      new { controller = "PublicHome", action = "Index", id = UrlParameter.Optional }); 

安裝RouteDebugger。這會告訴你,如果你的路線將被命中或不是給定的網址。

如果您匹配多個路線,第一個將被處理。 RouteDebugger會顯示所有匹配項。這取決於你對它們進行適當的重新排序。

如果ROUTEDebugger在404頁上不起作用,請打開自定義錯誤。例如:

<customErrors mode="On" defaultRedirect="err/index"> 
    <error statusCode="404" redirect="err/notfound" /> 
</customErrors>` 
+0

我之前公開過{public},但仍然無效。 – haroonxml 2012-07-25 09:29:30

+0

我收到以下異常:無法找到資源。 描述:HTTP 404.您正在查找的資源(或其某個依賴項)可能已被刪除,名稱已更改或暫時不可用。請檢查以下網址並確保它拼寫正確。 請求的網址:/ public/ – haroonxml 2012-07-25 09:30:25

+0

安裝[RouteDebugger](http://nuget.org/packages/RouteDebugger)以確保您的路線匹配。你有一個叫做「PublicHome」的控制器,它有一個名爲「Index」的GET操作,它具有零個強制參數? – 2012-07-25 09:32:36