我正在解决ASP .NET路由问题。我不知道这是否是Microsoft代码中的错误,或者我只是错误地使用它。
情景基本上是这样的:
我有一个我想添加的自定义路线。另外,我正在注册ASP .NET DynamicDataRoute
。如果我省略自定义路由,那么所有ASP .NET DynamicDataRoute
都可以正常工作。我在DynamicDataRoute
之前添加此内容:
routes.Add(new Route("IgnoreDirectory/{*pathInfo}"), new StopRoutingHandler()));
DynamicData生成的所有DynamicHyperlinks都是使用错误的根网址生成的,如下所示:
http://localhost/IgnoreDirectory/MyTable/List
应该是(直到我添加自定义路线)
http://localhost/MyDynamicData/MyTable/List
奇怪的是,我正在为完全不同的路径添加我的DynamicDataRoute:
routes.Add(new DynamicDataRoute("MyDynamicData/{{table}}/{{action}}")
{
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = model
});
为什么要为IgnoreDirectory添加路由,导致我的DynamicData路由使用IgnoreDirectory的基本网址????
我无法理解。
答案 0 :(得分:2)
我在这里走出困境,但我认为这与两件事情有关。路由存储在RouteTable中的顺序非常重要,因为应用程序将使用first route it finds来匹配URL。
我认为这里可能发生的是DynamicDataRoute正在您在路由表中的DynamicDataRoute之前插入的路径上构建自己。
我要做的第一件事就是在添加DynamicDataRoute后尝试移动Route add。
希望这会有所帮助......