2011-07-25 17 views
1

私はASP.NET WebFormsとC#で作業しています。 異なるページのルートを追加しようとしています。これは、私のglobal.asaxからのサンプルコードであり、ルートを登録します。ASP.NETで処理するルート

protected void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
    //AppSettings = AppConfig.AppSettings.Settings; 
    //ConSettings = AppConfig.ConnectionStrings.ConnectionStrings; 
} 

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.Add("Admin_Users_Update", new Route("Admin/Users/Update/{UserId}", new RoutingHandler("~/Forms/Admin/Users/UpdateUser.aspx"))); 
} 

これは問題なく動作します。/Admin/Users/Update/1のようなURLを開くと、編集フォームがうまく開きます。 しかし、パターンに従わない、または変更しないと問題が起きます。我々は

/Admin/Users/Update/1/2 

または

/Admin/Users/Update/ 

を入力した場合と同じように、それは単に、404ページが表示されます。

どうすれば対応できますか?そのため、URLパターンの違いがほとんどない場合は、それを処理できるはずです。

答えて

1

まあ、パターンを指定してそれを探すようにルートハンドラに依頼すれば、そのパターンを探すだけです。フレームワークはあなたのルールに従います。

あなたのオプションは、おそらくの/ etc 1/2)のために、いくつかのIDを使用することができます(

1)は、すべての異なる可能なパターンを見つけるとルートを登録します。

2)ルーティングルールに正規表現を指定できます。 hereをご覧ください。

3)オープンソースurl rewriterをチェックしてください。それはあなたが望むものを与えるかもしれません..サンプルhere

4)ルーティングをスキップし、リクエストを受信するパイプラインにある独自のHTTPモジュールを使用し、自分で処理します。ルートハンドラセクションを読んで適用することで、組み込みのルーティングを引き続き活用できます。私は試してみる価値があるとは思わない。

+0

これをどのように達成できますか? "ルーティングをスキップし、リクエストを聞いてパイプラインに座って自分で処理する独自のHTTPモジュールを使用します。" – Riz

+0

この記事では、カスタムhttpモジュールを使用して独自のルーティングを処理する方法について説明します。 "look for"セクションでいくつかの基本パターンを指定し、モジュールでそれを検索し、必要に応じてマッサージすることができます。 http://msdn.microsoft.com/en-us/library/ms972974.aspx –

関連する問題