處理URL重寫後postback重寫失效的問題 .browser檔案

來源:互聯網
上載者:User

     大家在使用ASP.NET和重寫URL時經常遇到的一個疑難雜症跟處理postback情境有關,具體地來說,當你在一個網頁上放置一個 <form runat="server"> 控制項時,ASP.NET 會自動地預設輸出標識的action屬性指向當前所在頁面。當使用URL重寫時,會出現這樣的問題,<form> 控制項顯示的URL不是原先請求的URL(譬如,/products/books),而是重寫過後的URL(譬如,/products.aspx?category=books)。這意味著,當你做一個postback到伺服器時,URL不再是你原先乾淨利落的那個了。

 

        在 ASP.NET 1.0 和1.1 中,大家經常訴諸於繼承<form> 控制項產生他們自己的控制項,來正確地輸出要使用的action屬性。雖然這可以工作,但結果有點亂,因為這意味著你需要更新你所有的頁面來使用這個另外的表單控制項,而且有時在Visual Studio所見即所得 (WYSIWYG)設計器裡也會遇上問題。

 

        好訊息是,在ASP.NET 2.0中,有個比較乾淨的訣竅你可以用來重寫<form>控制項的action屬性。具體地來說,你可利用新的ASP.NET 2.0控制項適配器擴充架構來定製控制項的輸出,用你提供的值來覆蓋action屬性的值。這不要求在你的.aspx頁面裡做任何編碼改動,而只要在你的/app_browsers檔案夾裡添加一個.browser檔案,註冊使用一個控制項適配類即可輸出新的action屬性。

 

App_Browser檔案夾簡單介紹:

該可選的檔案夾包含.browser檔案。.browser檔案描述瀏覽器(不管是行動裝置瀏覽器,還是台式機瀏覽器)的特 征和功能。ASP.NET在安裝路徑下的Config\Browser檔案夾中安裝了大量.browser檔案,這些檔案供所有應用程式共用。我們只是把 當前應用程式特有的瀏覽器檔案放在App_Browser檔案夾下。.browser檔案的內容即時動態地進行編譯,以便向ASP.NET運行庫提供最新 的瀏覽器資訊。

讓我們簡單談談擁有一個自訂的.browser檔案可能有協助的情境。設想應用程式使用了一個在某個瀏覽器下不能有效呈現的控制項。在指定的瀏覽器中顯示宿首頁面時,可以編寫一個.browser檔案,迫使ASP.NET使用一個不同的適配器來產生該控制項。

<browsers>
  <browser id="browserID">
    <controlAdapters>
      <adapter controlType="Samples.CustomControl" adapterType="Samples.Adapters.CustomControlAdapter" />
    </controlAdapters>
  </browser>
</browsers>

假設browserID與ASP.NET識別的標準瀏覽器之一相匹配,則上文所示的.browser檔案指示在指定的瀏覽器下使用CustomControlAdapter呈現CustomControl。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.