2011-12-29 14 views
1

私はできる限りこのことを説明しようとします。ASP.NET 4.0 URLルーティング - 類似のMapPageRoutes

カテゴリとコンテンツセクションを作成できるCMSを作成しました。両方とも完全に異なるテンプレートを持っていますが、ルーティングするときに同じURLルーティングmapPageRouteパラメータを使用したいと思います。基本的には、エイリアスがカテゴリであるかどうかをチェックする必要があります。

ここ

がGlobal.asaxの上の私の登録経路である:現在

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute(
     "Home", 
     string.Empty, 
     "~/Default.aspx" 
    ); 

    routes.MapPageRoute(
     "Category", 
     "{*CategoryAlias}", 
     "~/templates/Category.aspx" 
    ); 

    routes.MapPageRoute(
     "Content", 
     "{*ContentAlias}", 
     "~/templates/Content.aspx" 
    ); 
} 

、カテゴリが正常に動作しますが、私はURLでコンテンツセクションエイリアスを置いたときには、カテゴリを打つと次のルートにスキップしません。試してみる。 Category.aspxとContent.aspx Webフォームは全く異なるビューを持っています。コードの背後も同様ですが、カテゴリテーブル/プロシージャとその他のコンテンツにアクセスします。

もっと詳しい情報が必要な人は、尋ねてください。

答えて

1

これを試しましたか?

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute( 
     "Home", 
     string.Empty, 
     "~/Default.aspx" 
    ); 

    routes.MapPageRoute( 
     "Category", 
     "Category/{Cat}/{*queryvalues}", 
     "~/templates/Category.aspx" 
    ); 

    routes.MapPageRoute( 
     "Content", 
     "Content/{Cont}{*queryvalues}", 
     "~/templates/Content.aspx" 
    ); 
} 

次に、パスにカテゴリまたはコンテンツのいずれかが含まれていることを確認します。あなたは次のURI http://www.example.com/Content/Pressを持っている場合は、以下を使用してPressにアクセスすることができます

だから、
Page.RouteData.Values["Cont"].ToString(); 

、あなたのContent.aspxページであなたはまだ​​

EDITでキャッチすべてを取得しますその文字列を取得し、それを使ってユーザーがどのサイトにアクセスしようとしているのかを判断します。

MapRouterがページをマップする場所を見つけるために、何らかの種類の静的URL差別化を含める必要があります。

スタティックCategoryまたはContentをuriの先頭に含めない場合、MapRouterは常に最初のマップ(カテゴリマッピング)に満足し、スキップすることは決してありません。

+0

ええ、それは、私はURLに余分なパラメータがあることを望んでいません。私はそれがwww.website.com/categoryまたはwww.webiste.com/contentであることを望みます – balexander

+0

* queryvaluesはすべてをキャッチしています。これらのルートマップには、www.website.com/Categoryまたはwww.webiste.com/Content、www.website.com/Category/foo、またはwww.webiste.com/Content/foo/bar?m=rand –

+0

があります。 「プレス」と呼ばれるコンテンツセクションと「ニュース」というカテゴリがあります.Webサイトがwww.website.com/Pressまたはwww.website.com/Newsの場合、最初のテンプレートがfalseの場合は後者のテンプレートに切り替えることがわかりますか? – balexander

関連する問題