ASP.NET 2.0 URL Rewrite 学习总结

来自:http://www.cnblogs.com/icebutterfly/archive/2009/02/23/1396424.html

在看《ASP.NET 2.0编程珠玑》这本书时,我了解到了URL Rewrite。

本书中的示例是通过修改Web.config去达到URL Rewrite的目的,通过自己上网查找,可以实现这个功能的组件和方法还是很多的。由于时间原因,只学习了两种。一种是ASP.NET 2.0编程珠玑书中的,一种是通过MS的URLRewriter来实现的。

1,

在<system.web></system.web>中添加配置节点

<system.web>
<urlMappings enabled="true">
   <add url="~/2006"
     mappedUrl="~/Chapter1/YearView.aspx?year=2006"/>
   <add url="~/2005"
     mappedUrl="~/Chapter1/YearView.aspx?year=2005"/>
   <add url="~/2006/01"
     mappedUrl="~/Chapter1/MonthView.aspx?year=2006&amp;month=01"/>
   <add url="~/2006/02"
     mappedUrl="~/Chapter1/MonthView.aspx?year=2006&amp;month=02"/>
   <add url="~/2005/01"
     mappedUrl="~/Chapter1/MonthView.aspx?year=2005&amp;month=01"/>
   <add url="~/2005/02"
     mappedUrl="~/Chapter1/MonthView.aspx?year=2005&amp;month=02"/>
  </urlMappings>
</system.web>

然后,前台的客户端就可以添加类似的超链接

      <asp:HyperLink ID="HyperLink1" NavigateUrl="~/2005" runat="server">2005</asp:HyperLink>
      <asp:HyperLink ID="HyperLink1" NavigateUrl="~/2005" runat="server">2005</asp:HyperLink>
      <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/YEAR/01">01</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink2" runat="server" NavigateUrl="~/YEAR/02">02</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink3" runat="server" NavigateUrl="~/YEAR/03">03</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink4" runat="server" NavigateUrl="~/YEAR/04">04</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink5" runat="server" NavigateUrl="~/YEAR/05">05</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink6" runat="server" NavigateUrl="~/YEAR/06">06</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink7" runat="server" NavigateUrl="~/YEAR/07">07</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink8" runat="server" NavigateUrl="~/YEAR/08">08</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink9" runat="server" NavigateUrl="~/YEAR/09">09</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink10" runat="server" NavigateUrl="~/YEAR/10">10</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink11" runat="server" NavigateUrl="~/YEAR/11">11</asp:HyperLink><br />
                 <asp:HyperLink ID="HyperLink12" runat="server" NavigateUrl="~/YEAR/12">12</asp:HyperLink><br />

当点击超链接的时候,地址栏只会显示http://localhost:2537/WebDemo/2005/01,实际上是连接到了http://localhost:2537/WebDemo、Chapter1/MonthView.aspx?year=2006&amp;month=01

2,

  首先:现在MSDNURLRewriting,安装完成后,在安装目录下找到ActionlessForm ,URLRewriter。分别找的他们bin目录下的ActionlessForm.dll 和 URLRewriter.dll。然后添加到你的项目中。

  第二:修改配置文件

    在<configuration></configuration>中添加如下节点

<configSections>
  <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter"/>
 </configSections>
 <RewriterConfig>
  <Rules>
   <RewriterRule>
    <LookFor>~/(/d{4})/(/d{2})/(/d{2})</LookFor>
    <SendTo>~/GuanTestURLRewrit/ShowBlogContent.aspx?year=$1&amp;month=$2&amp;day=$3</SendTo>
   </RewriterRule>
   <RewriterRule>
    <LookFor>~/(/d{4})/(/d{2})/(/d{2})/Default/.html</LookFor>
    <SendTo>~/GuanTestURLRewrit/ShowBlogContent.aspx?year=$1&amp;month=$2&amp;day=$3</SendTo>
   </RewriterRule>
   <RewriterRule>
    <LookFor>~/(/d{4})/(/d{2})/Default/.html</LookFor>
    <SendTo><![CDATA[~/GuanTestURLRewrit/ShowBlogContent.aspx?year=$1&month=$2]]></SendTo>
   </RewriterRule>
   <RewriterRule>
    <LookFor>~/(/d{4})/Default/.html</LookFor>
    <SendTo>~/GuanTestURLRewrit/ShowBlogContent.aspx?year=$1</SendTo>
   </RewriterRule>
   </Rules>
 </RewriterConfig>

在<system.web></system.web>中添加下面的节点

<httpModules>
   <add type="URLRewriter.ModuleRewriter,URLRewriter" name="ModuleRewriter"/>
  </httpModules>

现在配置文件基本修改完成。下面是客户端代码:

<asp:HyperLink ID="hyYear" NavigateUrl="2003/Default.html" runat="server" Width="110px">Year</asp:HyperLink><br />
        <asp:HyperLink ID="hyYearAndMonth" NavigateUrl="2003/12/Default.html" runat="server" Width="110px">Year and Month</asp:HyperLink><br />
        <asp:HyperLink ID="hyYearMonthAndDay" NavigateUrl="2003/12/21/Default.html" runat="server" Width="247px">Year Month and Day</asp:HyperLink><br />

这样当我们点击按钮的时候,就会通过配置文件的正则表达式,去找到真正的路径。

例如:我们点击的是http://localhost:12003/Demo/2003/Default.html实际上的路径为:http://localhost:12003/Demo/GuanTestURLRewrit/ShowBlogContent.aspx?year=2003

相对而言,后者比较灵活,可以应用正则表达式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值