2013-08-23 47 views
2

我有一組問題,每個問題都有幾個標籤。每個標籤都是可點擊的,並且應該基於它來過濾問題。路由模式匹配,但期望的行動方法沒有被調用 - 果園1.7

我對標籤的路線:

new RouteDescriptor 
{ 
    Priority = -29, 
    Route = new Route(
    "questions/tagged/{tag}", 
    new RouteValueDictionary { 
      {"area","xxx.Intrust"}, 
      {"controller","Question"}, 
      {"action","DisplayByTag"}, 
      {"tag", ""} 
    }, 
    new RouteValueDictionary { 
      {"tag",@"\w*/*"} 
    }, 
    new RouteValueDictionary{ 
      {"area","xxx.Intrust"} 
    }, 
    new MvcRouteHandler()) 
}, 

一個典型的廣告代碼網址如下: http://local.intrustknowsbusiness.com/lendinng/questions/tagged/minimum%20opening%20deposit

但我總是得到404錯誤。

我調試了代碼,但在控制器中沒有Action方法(通常我喜歡看到「DisplayByTag」正在被調用)被調用。

我在幹什麼?我的其他路線工作正常,相應的方法也被調用,因爲他們應該。

我完全卡住了。請幫忙!

+0

正在調用什麼操作?你能不能展示你的'RouteConfig'以及這條路線如何適應它? – asymptoticFault

+0

沒有行動被稱爲!我在路線中可能調用的每一個可能的行動中加入了斷點。什麼是RouteConfig?原諒我 - 我對Orchard很新鮮! :) –

+0

「RouteConfig」是你的路由在ASP.NET MVC 4中定義的地方。我沒有意識到Orchard是一個建立在ASP.NET MVC 4上的CMS,聽起來像它改變了你如何做路線,所以我不確定如何回答你的問題,而無需更多地查看烏節。 – asymptoticFault

回答

2

清單:

  • 給你的路由較高的優先級 - 這是大於0(例如100)
  • 檢查功能的控制器(和實施IRouteProvider)在啓用

順便說一句 - 避免在路徑中有空格(編碼爲%20)。這可能會導致很多麻煩。更好地將它們編碼爲破折號等。

+0

賓果!把路線放在更高的優先地位就像一個魅力! –

+3

@NiladriSarkar太棒了!爲了說明它的工作原理 - 果園默認路線的優先級設置在0以下。如果您的優先級低於那麼查找匹配時優先使用這些默認路由。在你的情況下,其中一個默認值首先與你的URL匹配。 *經驗法則 - 你的路線越具體,它應該得到的優先級越高。* –

+0

非常好的澄清Pitor。這絕對會幫助像我這樣的初學者。謝謝! –