ASP.NET 2.0 URL Rewrite 學習總結

來源:互聯網
上載者:User

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

這樣當我們點擊按鈕的時候,就會通過設定檔的Regex,去找到真正的路徑。

例如:我們點擊的是http://localhost:12003/Demo/2003/Default.html實際上的路徑為:http://localhost:12003/Demo/GuanTestURLRewrit/ShowBlogContent.aspx?year=2003

相對而言,後者比較靈活,可以應用Regex。

 

作者:冰碟
出處:http://www.cnblogs.com/icebutterfly/
著作權:本文著作權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段聲明;必須在文章中給出原文串連;否則必究法律責任

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.