溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET和URL重寫如何處理PostBack

發(fā)布時(shí)間:2021-11-22 14:09:29 來源:億速云 閱讀:133 作者:小新 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)ASP.NET和URL重寫如何處理PostBack,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

在ASP.NET和URL重寫處理PostBack

大家在使用ASP.NET和URL重寫時(shí)經(jīng)常遇到的一個(gè)疑難雜癥跟處理postback場(chǎng)景有關(guān)。具體地來說,當(dāng)你在一個(gè)網(wǎng)頁上放置一個(gè) <form runat="server"> 控件時(shí),ASP.NET 會(huì)自動(dòng)地默認(rèn)輸出標(biāo)識(shí)的action屬性指向當(dāng)前所在頁面。當(dāng)使用URL重寫時(shí),會(huì)出現(xiàn)這樣的問題,<form> 控件顯示的URL不是原先請(qǐng)求的URL(譬如,/products/books),而是重寫過后的URL(譬如,/products.aspx?category=books)。這意味著,當(dāng)你做一個(gè)postback到服務(wù)器時(shí),URL不再是你原先干凈利落的那個(gè)了。

在 ASP.NET 1.0和1.1中,大家經(jīng)常訴諸于繼承<form> 控件生成他們自己的控件,來正確地輸出要使用的action屬性。雖然這可以工作,但結(jié)果有點(diǎn)亂,因?yàn)檫@意味著你需要更新你所有的頁面來使用這個(gè)另外的表單控件,而且有時(shí)在Visual Studio所見即所得設(shè)計(jì)器里也會(huì)遇上問題。

好消息是,在ASP.NET 2.0中,有個(gè)比較干凈的訣竅你可以用來重寫<form>控件的action屬性。具體地來說,你可利用新的ASP.NET 2.0控件適配器擴(kuò)展架構(gòu)來定制控件的輸出,用你提供的值來覆蓋action屬性的值。這不要求在你的.aspx頁面里做任何編碼改動(dòng),而只要在你的/app_browsers文件夾里添加一個(gè).browser文件,注冊(cè)使用一個(gè)控件適配類即可輸出新的action屬性。

ASP.NET和URL重寫如何處理PostBack

你可在這里查看一個(gè)我創(chuàng)建的樣例實(shí)現(xiàn),其展示了該如何實(shí)現(xiàn)與URL重寫協(xié)作的表單控件適配器(Form Control Adapter) 。它在我上面使用的***個(gè)(Request.PathInfo),第二個(gè)方法(UrlRewriter.Net 模塊)中都工作,它使用Request的RawUrl屬性獲取原先沒改寫過的 URL來顯示。而在第四個(gè)方法(ISAPIRewrite過濾器)中,你可以獲取ISAPI過濾器保存在Request.ServerVariables["HTTP_X_REWRITE_URL"] 中的原先的URL值。

我上面的FormRewriter類實(shí)現(xiàn)在標(biāo)準(zhǔn)的ASP.NET和ASP.NET AJAX 1.0網(wǎng)頁上應(yīng)該都工作(如果你遇上問題的話,告訴我一聲)。
正確地處理CSS和圖像引用

不少人在***次使用URL重寫時(shí),有時(shí)會(huì)遇上一個(gè)疑難雜癥,就是他們發(fā)現(xiàn)他們的圖像和CSS樣式表引用有時(shí)會(huì)停止工作。這是因?yàn)樗麄冊(cè)贖TML網(wǎng)頁里有對(duì)這些文件的相對(duì)引用,當(dāng)你開始在應(yīng)用里重寫URL時(shí),你需要意識(shí)到瀏覽器經(jīng)常會(huì)在不同的邏輯層次結(jié)構(gòu)層上(logical hierarchy levels)請(qǐng)求文件,而不是實(shí)際存儲(chǔ)在服務(wù)器上的東西。

譬如,如果我們上面的/products.aspx網(wǎng)頁對(duì).aspx 網(wǎng)頁里的logo.jpg有一個(gè)相對(duì)引用,但是通過 /products/books.aspx這個(gè)URL來請(qǐng)求的,那么瀏覽器在顯示網(wǎng)頁時(shí),將會(huì)發(fā)出一個(gè)對(duì)/products/logo.jpg的請(qǐng)求,而不是對(duì)/logo.jpg的請(qǐng)求。要正確地引用這個(gè)文件,確認(rèn)你用根目錄限定了(root qualify)CSS和圖像引用(“/style.css”,而不是 “style.css”)。對(duì)于ASP.NET控件,你也可以使用“~”句法從你應(yīng)用的根目錄來引用文件(譬如,<asp:image imageurl="~/images/logo.jpg" runat="server"/>) 。

關(guān)于“ASP.NET和URL重寫如何處理PostBack”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI