2008-12-09 77 views
1

從閱讀這裏和周圍的網絡,我接近假設答案是「否」,但...有沒有辦法修改查詢字符串而不會破壞ASP.Net回發?

比方說,我有一個ASP.Net頁有時有一個查詢字符串參數。如果頁面具有查詢字符串參數,我想在回發之前,之中或之後剝離它。該頁面已經有很多客戶端腳本(純JavaScript和jQuery)。

舉個例子,說我加載:

http://myPage.aspx?QS=ABC 

的QS參數是需要控制時,第一次加載和由「呼叫」在頁面設置頁面上顯示的內容。 myPage.aspx有需要填寫的表單元素,並有一個提交按鈕,可以回發。當頁面完成回傳,我需要回到網址爲:

http://myPage.aspx 

,以避免在查詢字符串存在被調用的客戶端代碼。換句話說,在提交之後,我不希望與查詢字符串參數關聯的客戶端操作觸發。我知道我可以將表單內容作爲查詢字符串參數本身追加到URL中,只是重定向到新的URL並避免提交/回發,但是這將需要更多類型的代碼隱藏檢查以避免不良數據和偶然欺騙。我認爲我也可以在代碼隱藏中設置一個隱藏字段,並與查詢字符串一起查看它以取消客戶端行爲,如果我從回發中返回,但仍然會使查詢字符串基本上永遠保持原樣並且我想要在初始頁面加載後襬脫它。

任何想法或最佳實踐?

PS - 有沒有什麼我可以做與Form.Action屬性不會打破回發行爲?

回答

1

IAM不知道這是你在找什麼,但如果理解正確的話,你可以這樣做:對於QS值

-on頁面加載檢查,如果它不存在使用隱藏的輸入字段。

- 第一次用QS加載頁面,進行正常處理並將QS值存儲在隱藏的輸入字段中。

- 如果沒有QS然後用隱藏的輸入值

-after回傳,你可以重定向到同一個頁面,在這一點上,你可以用戶的Request.Form []來獲取隱藏的輸入字段,仍然加載數據正確但擺脫了QS。

它在我的腦海中有意義,我不確定它現在有意義,但我會讓你決定。

1

這可能是不好的做法,但在那些情況下(和我只需要'重置'頁面),我只是做一個Response.Redirect到同一頁面。

+0

IIRC,Response.Redirect將失去我的viewstate和Server。Transfer將保留我的viewstate(即使轉到完全不同的頁面時),但會保持URL(與查詢字符串)完整。我在這裏看不到優勢。 – CMPalmer 2008-12-09 15:56:38

2

我會使用HTTPModule截取並重寫網址和查詢,因爲它來了。我不是100%,但我不認爲這對viewstate有任何影響。它聽起來(而且看起來)很複雜,但它實際上相當平凡並且對大量的改進和擴展(如通常的.NET)都是開放的。

相關問題