2008-09-17 7 views
0

So this post実際にASP.NETアプリケーションでURL書き換えを実装して "フレンドリーなURL"を取得する方法について説明しました。それは完璧に動作し、特定のページにユーザーを送るのに最適ですが、参照されるツールのいずれかを使用しているときにコード内に「フレンドリーな」URLを作成するための良い解決策を知っている人はいますか?ASP.NET UrlRewritingとページリンクを構築する

たとえば、書き換えルールが存在する場合、asp.netコントロールのリンクを〜/ mypage.aspx?product = 12としてリストすると、2つの異なる方法でコンテンツにリンクしているので問題になります。

私はDotNetNukeとFriendlyUrlの使い方に精通していますが、再作成者から友好的なURLコードを取得する「NavigateUrl」メソッドがありますが、UrlRewriting.netでこれを行う方法の例は見つかっていません。そこの他の解決策。

理想的には、私はこのようなものを得ることができます。

string friendlyUrl = GetFriendlyUrl("~/MyUnfriendlyPage.aspx?myid=13"); 

EDIT:私は、一般的な解決策を探しています、ではない私は私のサイトのすべてのページのために実装する必要が何かが、反対方向にルールに対して一致させることができ、潜在的な何か。

+0

良い質問 - これは私にとって今の話題です。 ScottGuのブログには、.NETでの新しいURLの書き換えについての詳細がいくつか掲載されています。 –

+0

ブライアン、私はそれをチェックしなければならない、私はかなり良いリンクを実際に処理している、それはちょうど私が常に私のWebアプリケーション内から、同じものをコーディングせずに適切なリンクを生成する毎回2か所で! –

答えて

3

System.Web.Routing

を参照してください。ルーティングの書き換えは異なっています。この手法を実装するには、ページを軽微に変更する必要があります(つまり、クエリ文字列パラメータにアクセスするすべてのコードを変更する必要があります)が、定義したルートに基づいてリンクを生成することができます。 ASP.NET MVCで使用されますが、どのASP.NETアプリケーションでも使用できます。

ルーティングは.Net 3.5 SP1の一部です

0

そうのような各ページの方法でUrlBuilderクラスを作成します。

public class UrlBuilder 
{ 
    public static string BuildProductUrl(int id) 
    { 
     if (true) // replace with logic to determine if URL rewriting is enabled 
     { 
      return string.Format("~/Product/{0}", id); 
     } 
     else 
     { 
      return string.Format("~/product.aspx?id={0}", id); 
     } 
    } 
} 
+0

私はより一般的なものを見つけようとしているので、UrlRewriting.netの内側と私のコードの内側に2つのルールを書き直す必要はありません。 –

関連する問題