ASP.NETルーティングを使用して、URLをサイトの任意の数のセクションにマップしています。それらはすべて同じページで処理されますが、私は異なるURLを使いたいと思います。たとえばmysection
のための私のblog
セクション
http://site.com/mysection
ためASP.NETルーティングでページにクエリ文字列を渡す
http://site.com/blog
など
のために、これらのセクションの数に制限はありませんが、彼らはすべてのLister.aspx
によって処理されます。 コンテンツを扱う別のページもあります。内容は、ContentView.aspx
という名前です。次のように私のルートは以下のとおりです。(猫はカテゴリのリストです)
cats.ForEach(c =>
{
table.Add(new Route(c.ShortName, new PageRouteHandler("~/Lister.aspx?cat=" + c.ID),));
table.Add(new Route(c.ShortName + "/{id}", new PageRouteHandler("~/ContentView.aspx")));
table.Add(new Route(c.ShortName + "/{id}/{title}", new PageRouteHandler("~/ContentView.aspx")));
});
のは、私はID 123
とタイトルhello
でブログ記事を持っているとしましょう:
ユーザーを彼らはまた、単に使用することができますhttp://site.com/blog/123/hello
でアクセスすることができますID http://site.com/blog/123
コンテンツビューアの代わりにリスターページを指し示すようにhttp://site.com/blog
したいと思います。また、どのカテゴリ(blog
またはmycategory
など、動的に作成されたもの)を区別するためにカテゴリIDが必要です。表示。私はカテゴリーIDをクエリー・ストリングに渡そうとしていますが、リスター・ページは呼び出されますが、照会ストリングはありません。なぜこのような振る舞いがあり、カテゴリーIDをリスターページに送ることができますか?
コードに2つのエラーがあります:CategoryRouteHandlerの基本クラスは何ですか?GetHttpHandlerメソッドは何を返しますか?私は、基本クラスとしてPageRouteHandlerを使用し、現在のIHttpHandlerを返すことで動作させようとしましたが、その値をページに渡すことはできませんでした。 –
申し訳ありません、編集しましたが、うまくいくと思います。 – thelsdj