2008-09-17 96 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); 
     } 
    } 
}