4

我有一個區域的自定義路線如下:ASP.NET MVC 3區 - 找不到查看使用自定義路線

context.Routes.Add(
       "SearchIndex - By Location - USA", 
       new CountryTypeSpecificRoute(
        CountryType.UnitedStates, 
        "search/{locationType}-in-{query}", 
        new { controller = "Search", action = "Index", query = UrlParameter.Optional }, 
        new { locationType = new UsaLocationSearchRouteConstraint() }) 
      ); 

實例網址:

/搜索/紐約市鄰里區

解決此問題。但它找不到視圖。

未找到'索引'或其主人的視圖或沒有視圖引擎 支持搜索的位置。以下地點搜索 :〜/瀏覽/搜索/ Index.cshtml 〜/查看/共享/ Index.cshtml

視圖生活〜/地區/搜索/瀏覽/搜索/ Index.cshtml

爲什麼它不在那裏?

如果我做context.MapRoute而不是context.Routes.Add,它的工作原理。所以它似乎與我使用自定義路線的事實有關?

任何想法?

回答

5

解決這得益於this answer

我做了我的自定義路由實現IRouteWithArea(把它在構造函數),並相應地更新註冊:

context.Routes.Add(
       "SearchIndex - By Location - USA", 
       new CountryTypeSpecificRoute(
        CountryType.UnitedStates, 
        "search/{locationType}-in-{query}", 
        new { controller = "Search", action = "Index", query = UrlParameter.Optional }, 
        new { locationType = new UsaLocationSearchRouteConstraint() }, 
        "Search") 
      ); 

注意最後一個參數「搜索」 - 爲區域名稱。

不知道如何工作,但它確實如此。猜測內部路由引擎查找實現IRouteWithArea的路由。

問題解決!

+1

太棒了!我偶然發現了這個問題,甚至沒有找到這個解決方案......但我已經遇到過很多次了! – SoWeLie