zoukankan      html  css  js  c++  java
  • ASP.NET 2.0 URL Rewrite 学习总结

    在看《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

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

    作者:冰碟
    出处:http://www.cnblogs.com/icebutterfly/
    版权:本文版权归作者和博客园共有
    转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
    要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
  • 相关阅读:
    python实现从生成器中取固定角标的元素
    python-高阶函数
    git学习手册
    python批量进行文件修改操作
    python第一站
    LoadRunner,一个简单的例子
    python3中urllib2的问题
    gitlab 随笔
    sed 删除文本
    sed 修改文本
  • 原文地址:https://www.cnblogs.com/icebutterfly/p/1396424.html
Copyright © 2011-2022 走看看