1

ASP .NET ルーティングに関して、気が遠くなるような問題が発生しています。これが Microsoft コードのバグなのか、それとも使い方が間違っているだけなのかはわかりません。

シナリオは基本的に次のとおりです。

追加したいカスタム ルートがあります。さらに、ASP .NET を登録していますDynamicDataRoute。カスタム ルートを省略すると、すべての ASP .NET が正常にDynamicDataRoute動作します。これを my の前に追加すると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

私はここで手足を出していますが、それには2つのことが関係していると思います. ルートが RouteTable に格納される順序は、アプリケーションがURL を照合するために最初に見つけたルートを使用するという点で重要です。

ここで発生していると思われるのは、DynamicDataRoute が、ルート テーブルの DynamicDataRoute の前に挿入している Route に基づいて構築されているということです。

最初に行うことは、DynamicDataRoute が追加された後に Route の追加を移動することです。

お役に立てれば...

于 2011-08-07T21:05:39.077 に答える