0

私のページルートマッピングは、特定の基準に応じて変わります。この基準を決定するには、にアクセスする必要があります。HttpRequestこれは、でルートマッピングを実行できないことを意味しApplication_Start()ます。そのメモではPreInit()、デフォルトのページでそれを実行しましたが、問題なく動作しているようです。ただし、ルートテーブルで見たすべての例はApplication_Startで実行していますが、これは純粋にルートリストをクリアして再度追加することを避けるためですか?私のやり方でWebアプリケーションに害を及ぼすことはありますか?

編集:例:

プロジェクト番号と、Webサイトがモバイルデバイスで表示されているかどうかに基づいて、さまざまなフォルダーからコントロールをロードします。そのため、ルートをマッピングする前に、次のようにこの情報を知っておく必要があります。

RouteCollection.MapPageRoute("OneParam", "{Action}.html", String.Format("~/{1}{2}/Default.aspx", ProjectNumber, MobilePathStr));

これは、のようなものにマップされるか、にマップされる~/1234/Mobile/Default.aspx可能性があります~/1234/Default.aspx

4

1 に答える 1

0

そうしないでください。

代わりに、RouteBaseリクエストごとにその情報を検索し、適切なハンドラーを実行する独自のクラスを作成する必要があります。

ASPXページに送信するには、return BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(Page)) as Page;またはを作成してPageRouteHandlerそれに委任することができます。

于 2012-12-04T17:08:05.307 に答える