解决用户控件循环引用的笨办法
生活随笔
收集整理的這篇文章主要介紹了
解决用户控件循环引用的笨办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在上一篇中提到使用MagicAjax開發了一個項目,因為做這個項目之前對MagicAjax不是很了解,在里面使用了用戶控件,我發現這是一個很致命的錯誤,用戶控件在MagicAjax中用起來很痛苦.
??? 因我們的項目不是簡單的只要求"看起來像"沒有刷新頁面,其中一個主要的頁面有那么一點點復雜,因頁面中數據可以分成多塊,有時只要更新某一塊中的數據,有時候可能要更新好幾塊的數據.于是我用分塊的思想來使用MagicAjax(AjaxZone),所以用起來有點變態 .因為程序偶爾會把IE弄死,又找不到原因,只是猜想可能因為事件太多IE處理不了卡死.于是我就更改以前的程序響應方式.
??? 以前程序是一塊一塊去取數據的,如果有多塊數據要取,有時候要來回好幾次,想想MagicAjax中的ViewState,我的頁面中還有四個Gridview,你應該知道有多耗性能...我想把程序改成要多塊數據時,不用來回多次,一次搞定--只有一個ViewState,于是把MagicAjax的源碼改了一通.終于改得勉強可以滿足需求了,卻發現我的用戶控件中有循環引用的問題.
??? 大概就是一種情況下,在用戶控件A中發送請求,要求同時更新用戶控件B中的數據,因此A要引用B,另一種情況下,在用戶控件B中發送請求,同時要更新用戶控件A中的數據,B又要引用A,于是惡夢就開始了.在MSDN中看了半天,網上搜了好久也沒有找到好的辦法,據我了解,循環引用是因為用Reference或Regist指令時在編譯的時候會把控件引用進來,網上也有說可以用動態編譯的方法避免,不過我們的項目最后是要發布的,不能用那個.
??? 最后笨筋一動,找到一個笨方法,在APP_CODE中創建了一個接口,用B繼承接口,接口中提供A中要使用到的屬性和方法.B還引用A,當A要使用的B的時候就把FindControl方法中找的控件轉成接口來調用 .不知道有沒有好點的辦法,還望路過的達人不吝賜教.
??? 因我們的項目不是簡單的只要求"看起來像"沒有刷新頁面,其中一個主要的頁面有那么一點點復雜,因頁面中數據可以分成多塊,有時只要更新某一塊中的數據,有時候可能要更新好幾塊的數據.于是我用分塊的思想來使用MagicAjax(AjaxZone),所以用起來有點變態 .因為程序偶爾會把IE弄死,又找不到原因,只是猜想可能因為事件太多IE處理不了卡死.于是我就更改以前的程序響應方式.
??? 以前程序是一塊一塊去取數據的,如果有多塊數據要取,有時候要來回好幾次,想想MagicAjax中的ViewState,我的頁面中還有四個Gridview,你應該知道有多耗性能...我想把程序改成要多塊數據時,不用來回多次,一次搞定--只有一個ViewState,于是把MagicAjax的源碼改了一通.終于改得勉強可以滿足需求了,卻發現我的用戶控件中有循環引用的問題.
??? 大概就是一種情況下,在用戶控件A中發送請求,要求同時更新用戶控件B中的數據,因此A要引用B,另一種情況下,在用戶控件B中發送請求,同時要更新用戶控件A中的數據,B又要引用A,于是惡夢就開始了.在MSDN中看了半天,網上搜了好久也沒有找到好的辦法,據我了解,循環引用是因為用Reference或Regist指令時在編譯的時候會把控件引用進來,網上也有說可以用動態編譯的方法避免,不過我們的項目最后是要發布的,不能用那個.
??? 最后笨筋一動,找到一個笨方法,在APP_CODE中創建了一個接口,用B繼承接口,接口中提供A中要使用到的屬性和方法.B還引用A,當A要使用的B的時候就把FindControl方法中找的控件轉成接口來調用 .不知道有沒有好點的辦法,還望路過的達人不吝賜教.
轉載于:https://www.cnblogs.com/shendsun/archive/2008/12/16/1355663.html
總結
以上是生活随笔為你收集整理的解决用户控件循环引用的笨办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: net.sf.json.JSONObje
- 下一篇: 转基因大豆提高大豆油脂产量80%