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