我正在開發ASP.Net 3.5項目的自定義URL重寫器。這個重寫器在功能上與大多數重寫器的功能不同,唯一的區別是友好的URL集合沒有從web.config文件加載 - 它來自數據庫。我做了一個天真的假設,即從零開始開發一個定製的重寫模塊會很容易,但現在我知道我把自己放在了一起。讓我們直接看看技術問題。每當調用RewritePath()時,Page.IsPostBack爲false
在測試重寫器時,我設置了一個友好的URL,將用戶轉到Web表單。從這個表格回傳不應改變友好的地址,因爲任何人所期望的,所以
http://my.web.site/app_root/FriendlyURL
總是被改寫爲http://my.web.site/app_root/not_friendly/form.aspx
一切都很好,當瀏覽器首次加載FriendlyURL。頁面出現並且功能完整。但是,當表單重新發布到服務器時,頁面只是重新加載,但在服務器端,IsPostBack
爲false。這就像F5被擊中,除了一個HTTP POST確實發生。不出所料,當互動通過「不友好」的URL發生時,POST動作會按照預期觸發回發。這個證據表明HttpContext.RewritePath
以某種方式混淆了頁面生命週期,使得它失去了回發操作的意義。任何方向?謝謝。
我認爲Humberto的權利,但對於參考我記得,至少2.0,你必須調整Form.Action值,以及重寫網址在使用回發的網頁上。 – harpo 2011-03-24 00:37:13