私はMVC 2プレビュー2を使用しているWebアプリケーションを持っています。すべてのルートが登録された後、チェーンをさらに下にしてデコレータで各ルートをラップする必要があります。問題はルーティングを中断することです。何が起こるのかは、GetVirtualPathメソッドがアプリケーション内の他の領域(私は単一のプロジェクト領域を使用しています)と誤って一致します。デコレータが役に立つかどうかは関係ありません。次のパススルーを使用すると、それを解消するのに必要なのはすべてです。なぜルーティングデコレータはASP.NET MVC 2でルーティングを中断しますか?
すべてのルートが登録された後、単純なループでデコレータを割り当てます。
var routes = RouteTable.Routes;
for (var i = 0; i < routes.Count; i++)
{
routes[i] = new RouteDecorator(routes[i]);
}
経路とエリアを壊さずにデコレータを安全に挿入するにはどうすればよいですか?
再現可能なソリューションはありますかto download hereです。再現では、ルートデコレータはコメントアウトされています。それを再びコメントするとルーティングが中断され、最初のダミーエリアのルーティングデータは、通常は対応するネームスペースのみと正しく一致するリンクと一致します。
努力をいただきありがとうございます。 IRouteWithAreaを実装しても問題は解決しませんが、新しい方向へ私を連れていくかもしれません。ありがとうございました。 –
デコレータは、ルートを複数回折り返してしまうように見えます。実際のソリューションを実装するためのコードを提供して私の答えを編集しましたが、なぜこれがむしろ奇妙なのかを知りたいのが理想です。 –
これは間違いなくこの問題に対する答えです。私は産卵デコレータの問題をキャッチしませんでした。これは、何らかの奇妙な振る舞い、またはそれが起こる理由を理解していないと予想される振る舞いです。 –