2008-09-17 103 views
0

So this post討論瞭如何在ASP.NET應用程序中實際實現url重寫以獲得「友好的url」。這非常完美,對於將用戶發送到特定頁面非常有用,但是有誰知道在使用其中一個引用的工具時在代碼中創建「友好」URL的好方法?ASP.NET UrlRewriting和構造頁面鏈接

例如,當存在重寫規則時,將asp.net控件內部的鏈接列爲〜/ mypage.aspx?product = 12,這是一個問題,因爲您以兩種不同的方式鏈接到內容。

我熟悉使用DotNetNuke和FriendlyUrl的地方有一個「NavigateUrl」方法,將從重新編寫友好的Url代碼,但我沒有找到如何使用UrlRewriting.net或在那裏的其他解決方案。

理想情況下,我希望能夠得到像這樣的東西。

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

編輯:我要尋找一個通用的解決方案,而不是東西,我要實現在我的網站的每一頁,但潛在的東西,可以在相反的方向對陣的規則。

+0

好問題 - 這是我現在的熱門話題。順便說一下,ScottGu的博客有關於.NET中新的URL重寫的一些細節。 – 2008-09-19 16:26:57

+0

布賴恩,我必須檢查它,我有實際的鏈接處理相當好,這只是我如何保證,我總是從我的web應用程序中生成適當的鏈接,而不編碼相同的東西每次都在兩個地方! – 2008-09-19 16:31:27

回答

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); 
     } 
    } 
}