我在一个地区有一条自定义路线,如下所示:
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() })
);
示例网址:
/搜索/社区功能于新纽约城
解决行动正常。但它无法找到视图。
未找到视图“索引”或其主控或没有查看引擎 支持搜索的位置。以下地点是 搜索:〜/ Views / Search / Index.cshtml 〜/查看/共享/ Index.cshtml
该视图位于〜/ Areas / Search / Views / Search / Index.cshtml
为什么不看那里?
如果我context.MapRoute
代替context.Routes.Add
,则可行。所以它似乎与我使用自定义路线的事实有关?
有什么想法吗?
答案 0 :(得分:5)
我制作了自定义路由器IRouteWithArea
(在ctor中接收),并相应地更新我的注册:
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
的路由。
问题解决了!