在上一篇中提到使用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方法中找的控件转成接口来调用 .不知道有没有好点的办法,还望路过的达人不吝赐教.

转载于:https://www.cnblogs.com/shendsun/archive/2008/12/16/1355663.html

解决用户控件循环引用的笨办法相关推荐

  1. 如何在Web用户控件中引用样式表中的样式

    如何在Web用户控件中引用样式表中的样式 <%@ Control Language="C#" AutoEventWireup="true" CodeFil ...

  2. 用户控件中动态加入脚本引用

    用户控件中动态加入脚本引用,添加前先判断是否已经有引用,没有才添加. //××××.ascx protected void Page_Load(object sender, EventArgs e){ ...

  3. 用户控件制作时设计模式加载报错的解决办法

    最近改了个用户控件,在设计界面加载时总是报错. 网上查了下可以用DesignMode解决,但是在构造函数里用DesignMode还是不行.查原因后发现该Design模式不能嵌套UserControl, ...

  4. asp.net引用用户控件

    页面上直接引用 <%@ Register TagPrefix="scott" TagName="header" Src="Controls/He ...

  5. 解决在ascx使用outputcache就不可以设置用户控件自己的属性

    解决在ascx使用outputcache就不可以设置用户控件自己的属性 转载至:http://www.aspnetpro.com/NewsletterArticle/2003/08/asp200308 ...

  6. ASP.NET重用代码技术 - 用户控件技术

    作者: 苏红超 使用ASP.NET中的代码绑定技术来使得代码重用变得简单可行.我们发现,利用代码绑定技术我们可以容易的将我们的代码和内容分离开来,利用它可以建立可重用的代码,只是这种技术本身也存在着一 ...

  7. 学习笔记---母板页、用户控件、第三方控件及视图状态管理

    一.母版页 在制作页面的过程中, 多个页面往往具有相同的页面Header和页面Footer, 多个页面只是在中间部分有变化. 那么我们完全可以避免在每个页面中都写一遍页头和页尾的代码, 这种技术就是母 ...

  8. 自定义用户控件,实在数据动态提示

    做公司内部项目时,公司在输入查询条件的TextBox框中,要求实现数据动态提示.这一下子就让我郁闷了.以前没有做过啊.只好上网找罗.终于找到了一些这方面的资料.功能基本上也实现了.可是在输入中文条件时 ...

  9. (转) ASP.NET 2.0:使用用户控件和定制的Web部件个人化你的门户网站(二)

    Web部件目录 我们已经见过了如何在 WebPartZones 控件中事先放入Web部件.你还可以用另外一种方法完成这个功能,那就是允许用户在运行时添加新的Web部件.通过使用 CatalogZone ...

最新文章

  1. 【UIKit】文本框(UITextField)及键盘遮挡处理和回收
  2. UVa11464 - Even Parity(递推法)
  3. 练习PYTHON之EPOLL
  4. java中static x 5_java中static作用详解
  5. Acwing 232. 守卫者的挑战
  6. java.lang.ClassCastException:android.widget.Button cannot be cast to android.widget.ImageView
  7. 新申请了一个博客,这个博客主要用来记录编程学习笔记
  8. 『迷你教程』数据分析都不知道的非参数统计概论
  9. CDRX4X5X6X7X8下载安装失败的原因教程分享(CorelDRAW)
  10. KDE桌面下konsole打开terminal/tab 并执行命令或脚本
  11. Flink 与 Storm的对比
  12. GeForce Experience 安装时乱码解决
  13. 权威数据:百度9月后最新算法转SEOwhy
  14. 对冲基金经理的告别信 (ZT)
  15. JDK源代码以及200多部软件著作中出现的以连字符构造的1011个合成词
  16. MySQL语句—DDL语句
  17. 欧拉角速率与机体角速度转换详细推导
  18. 华硕主板破Linux密码,解决华硕主板常见故障现象及方法
  19. 3.6 创建和使用附件字段
  20. Windows 2008R2 +MDT2013+WDS(1)

热门文章

  1. $python数据分析基础——初识numpy库
  2. 【原创】简单轻松浏览FTP
  3. C#开发终端式短信的原理和方法
  4. vs/c++缓冲区溢出,未初始化变量检查
  5. java8 stream to map_Java 8 Stream Api 中的 map和 flatMap 操作
  6. jquery ajax 解决跨域访问问题
  7. 多线程创建方式 线程池、Future和CompletableFuture
  8. mybatis 一对一 一对多 级联查询
  9. mpvue 从零开始 女友初成长 0
  10. olive videoeditor开源跨平台视频编辑器