2011-09-01 3 views
0

のURLルーティングを実装するコードを入力してください。私は上記URLにユーザーがクリックが、その後、要求することを望む私はURLについてルーティングコンセプトを使用して書き直したい場合は、可能であれば

最初の1


www.mysite.com/101/category.aspx

ように私のページに2 URLがあるとしべきでは

www.mysite.com/category.aspx?id=101ように書きますが、このURL www.mysite.com/101/category.aspx

はaddressbaに表示されるはずです。すべてのユーザが直接www.mysite.com/category.aspx?id=101のようなURLを入力します

ときに何のルーティングは、処理すべきではなく、URLの上に起こらないと

www.mysite.com/category.aspxでしょうか? id = 101このURLはアドレスバーに表示されます。

秒1


www.mysite.com/audi/product.aspx

ので、私は上記のURLにユーザーがクリックは、その要求が

WWWのようにすべきで行くときことをしたいです。 mysite.com/product.aspx?cat=audiでも

www.mysite.com/audi/product.aspxこのURLはアドレスバーに表示されます。すべてのユーザが直接何のルーティングが処理すべきではなく、URLの上に起こらないと

www.mysite.com/product.aspxのでしょうか?そして、www.mysite.com/product.aspx?cat=audiのようなURLを入力します

cat = audiこのURLはアドレスバーに表示されます。

私はurlルーティングで決して作業していません....だから、コーディングの面で私を案内してください。使用してASP.NETで感謝

答えて

1

IIS7 rewrite moduleあなたはこのようなものを使用します:私はもともとあったとして、あなたがMapPageRoutequerystringとしてルーティング変数を渡すことはできません実現として

<rewrite> 
    <rules> 
    <rule name="Rewrite to category.aspx"> 
     <match url="^([0-9]+)/category.aspx" /> 
     <action type="Rewrite" url="category.aspx?id={R:1}" /> 
    </rule> 
    <rule name="Rewrite to product.aspx"> 
     <match url="^(.*)/product.aspx" /> 
     <action type="Rewrite" url="product.aspx?cat={R:1}" /> 
    </rule> 
    </rules> 
</rewrite> 

を更新します。実際には、これをやりたければ物事が難しくなります。私が考えることができる2つの選択肢があります。

オプション1)

次のルートを使用してください。

routes.MapPageRoute(
    "category", 
    "{category}/category.aspx", 
    "category.aspx" 
); 

そして、カテゴリ値を抽出するために、あなたのcategory.aspxの代わりquerystringに次のコードを使用します。

ControllerContext.RouteData.Values["category"]; 

オプション2)

これは、パスを書き換える際querystringRouteDataを書き換えるためにカスタムハンドラを作成する必要があります。

​​

これは、次のように登録できます。

routes.Add("category", new Route("{category}/category.aspx",  
      new PageRouteWithQueryStringHandler ("~/category.aspx", true))); 
関連する問題