Page Load執行兩次的解決方法

2021-04-13 09:15:43 字數 974 閱讀 2504

專案中有個列表介面,列表介面中有個乙個autopostback屬性設定為true的下拉框,這個下拉框用於對**狀態進行篩選,但是在執行的情況很奇怪,每次選擇了篩選器以後發現頁面還是顯示初始狀態,即第一次載入頁面的內容。通過斷點跟蹤發現原因是page_load執行過兩次,page_load中的**結構如下所示:

page_load(....)

...}

通過選擇篩選器觸發頁面回傳,第一次執行page_load和預想情況一樣,由於page.ispostback屬性為true,所以不執行頁面的初始**。然後頁面執行dropdownlist_selectindexchange事件響應**。這個也是正常的。但是奇怪的事情發生了,在執行了dropdownlist_selectindexchange事件響應**後,頁面再次執行了page_load,而且這一次page.ispostback屬性為false,即頁面是首次載入而不是回傳頁面。然後頁面執行首次載入的初始**從而造成了無論怎麼選擇篩選器的值,頁面總是顯示初始值的原因。

首先想到的是**中是不是存在跳轉到自身的頁面的**,比如:當前頁面是a.aspx, 但在**中存在response.redirect("a.aspx")語句,或者在客戶端存在window.location.href = 'a.aspx'這種語句,從而造成頁面重新載入,但是通過檢查**沒有發現。在網路上搜尋了一下,發現一篇文章中說可能是控制項中的位址引(src=...)用了無效位址造成了頁面的重新載入。這個給我們提供了乙個思路,也就是html或者伺服器端控制項的屬性被賦非法值,那麼可能造成也頁面的重新早入,通過一點點的去掉html**,然後進行斷點跟蹤,發現在table中間的background屬性被我賦了乙個顏色值,即"#ececec"這樣的值。而background的合法值應該是乙個位址,我的原意是給table設定乙個背景顏色,所以這裡的屬性是bgcolor。就是由於這個原因造成了頁面的重新載入,修改後問題解決。

所以在出現頁面非正常的多次載入時,可以檢查一下自己的html源**,看看時不是有哪個標籤的屬性被賦了非法值了。

解決jquery click事件執行兩次

mydiv click function e unbind 方法移除被選元素的事件處理程式。該方法能夠移除所有的或被選的事件處理程式,或者當事件發生時終止指定函式的執行。該方法也可以通過 event 物件取消繫結的事件處理程式。該方法也用於對自身內部的事件取消繫結 比如當事件已被觸發一定次數之後,刪...

QuartzJOb執行兩次

這個文章寫的不錯 抄襲第一種解決方案 tomcat啟動載入問題 unpackwars true autodeploy true 專案訪問的時候將工程名字去掉,增加了乙個配置contant path,最終採用這種方案 unpackwars true autodeploy false deployons...

Jquery 事件執行兩次

阻止冒泡的方法並不止 return false 這一種,還有event.stoppropagation 這兩種方法是有區別的,簡單來說 event.stoppropagation 會阻止事件往上冒泡,但是並不阻止事件本身 return false 則是既阻止了事件往上冒泡又阻止了事件本身。修改前 p...