1

我对 ASP .NET 路由有一个令人震惊的问题。我不知道这是否是 Microsoft 代码中的错误,或者我只是使用错误。

场景基本上是这样的:

我有一条要添加的自定义路线。此外,我正在注册 ASP .NET DynamicDataRoute。如果我省略了自定义路由,所有 ASP .NET 都DynamicDataRoute可以正常工作。一旦我在我的之前添加这个DynamicDataRoute

routes.Add(new Route("IgnoreDirectory/{*pathInfo}"), new StopRoutingHandler()));

DynamicData 生成的所有 DynamicHyperlinks 都是使用错误的根 url 生成的,如下所示:

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 的基本 url??

我想不通。

4

1 回答 1

2

我在这里很危险,但我认为这与两件事有关。路由存储在 RouteTable 中的顺序很重要,因为应用程序将使用它找到的第一个路由来匹配 URL。

我认为这里可能发生的事情是 DynamicDataRoute 正在建立在您在路由表中 DynamicDataRoute 之前插入的 Route 上。

我要做的第一件事是在添加 DynamicDataRoute 之后尝试移动 Route 添加。

希望这可以帮助...

于 2011-08-07T21:05:39.077 回答