ASP.NET Url重写和构造页面链接
时间:2020-03-05 18:59:55 来源:igfitidea点击:
因此,本文讨论了如何在ASP.NET应用程序中实际实现URL重写以获取"友好的URL"。这样做很完美,非常适合将用户发送到特定页面,但是没有人知道使用参考工具之一在代码内创建"友好" URL的好的解决方案吗?
例如,当存在重写规则时,将asp.net控件内的链接列出为〜/ mypage.aspx?product = 12会是一个问题,因为我们将以两种不同的方式链接到内容。
我熟悉使用DotNetNuke和FriendlyUrl的方法,其中有一个" NavigateUrl"方法可以从重写器获取友好的Url代码,但是我没有找到如何使用UrlRewriting.net或者其他解决方案进行操作的示例那里。
理想情况下,我希望能够得到这样的东西。
string friendlyUrl = GetFriendlyUrl("~/MyUnfriendlyPage.aspx?myid=13");
编辑:我正在寻找一种通用的解决方案,不是我必须为站点中的每个页面实现的解决方案,而是潜在地可以与相反方向的规则匹配的解决方案。
解决方案
回答
使用每个页面的方法创建一个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); } } }
回答
请参阅System.Web.Routing
路由与重写不同。实施此技术确实需要对页面进行少量更改(即,将需要修改任何访问querystring参数的代码),但是它允许我们根据定义的路由生成链接。它由ASP.NET MVC使用,但可以在任何ASP.NET应用程序中使用。
路由是.Net 3.5 SP1的一部分