當使用jQuery將POST數據發送回服務器時,出現一些奇怪的行爲。jQuery POST不會更改IsPostback變量
如果我在序列化表單數據中包含__VIEWSTATE和__EVENTVALIDATION,則IsPostback頁面變量設置爲true,如果我排除這兩個,則將IsPostback設置爲false。
它很容易包含這兩個變量,但有人知道幕後發生了什麼?
當使用jQuery將POST數據發送回服務器時,出現一些奇怪的行爲。jQuery POST不會更改IsPostback變量
如果我在序列化表單數據中包含__VIEWSTATE和__EVENTVALIDATION,則IsPostback頁面變量設置爲true,如果我排除這兩個,則將IsPostback設置爲false。
它很容易包含這兩個變量,但有人知道幕後發生了什麼?
視圖狀態和事件驗證跟蹤的一個方面是否發生回發。考慮到基於事件的ASP.NET頁面生命週期,沒有其他方式來跟蹤回發是否發生,而不是僅僅通過將值存儲在某處。
換句話說,您可以通過挖掘viewstate對象並查找回發佈爾值並將其更改爲true來手動檢查回發。這可能與描述不完全相同,但它突出顯示了視圖狀態內的情況。
IsPostBack()有點亂,但是它檢查__VIEWSTATE和__EVENTVALIDATION,而不是其他的。它肯定不會做的是檢查HTTP動詞是POST還是GET,這是大多數人認爲的(如果您設置了簡單頁面並在查詢中放置了視圖狀態和事件驗證(如果存在))字段,字符串,然後檢查IsPostBack()
但是,爲什麼要檢查?真正這隻有當發送完整的表單提交時發揮作用,如果你部分發布你,往往做到一個Web服務,其中IsPostBack是不重要
如果你想用jquery發佈「postback」,你應該包含__VIEWSTATE和__EVENTVALIDATION這些是ASP.NET WebForms需要能夠正確傳播完整回發的兩個重要數據塊。你只希望發出服務電話,那麼你不應該需要任何一個e字段,但是您將失去發佈到具有WebForms事件管道的所有優點的頁面的能力。
你應該發佈你正在做的和/或試圖完成的一些示例代碼。 – 2009-06-02 04:28:06