asp.net 避免用户自定义控件的父类代码多次运行
来源:互联网 发布:软件待着带着没响应 编辑:程序博客网 时间:2024/06/08 00:04
在一个asp.net项目中,用户自定义控件是很经常使用的,一个项目中一般都会有多个用户自定义控件,而为了代码重用,通常这些控件都会继承一个父类,
一个页面还会引用多个用户自定义控件。
这种情况如果不注意控制就会出现父类中的代码多次运行。
这种情况是真实存在的,我新到现在的公司,参与一个项目的改版的时候,发现了这样的现象,为了避免这样的情况再次出现,我简单设计了一个框架。
一个自定义控件的父类:UCBase.cs
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;using UCLibrary.Page;namespace UCLibrary.UC{ public class UCBase : System.Web.UI.UserControl { public UCBase() { this.Load += DoAction; } private void DoAction(object o, EventArgs e) { PageBase page = (PageBase)this.Page; if (page.State == UCBaseState.FirstLoading) { page.State = UCBaseState.Loading; OnFirstLoading(page); } } protected virtual void OnFirstLoading(PageBase page) { //TODO:只运行一次的代码 Response.Write("<script>alert('运行了用户自定义事件第一次加载事件')</script>"); } } public enum UCBaseState : byte { UnLoad = 0, FirstLoading = 1, Loading = 2, End = 3 }}
一个页面的父类:PageBase.cs
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Web;using System.Web.UI;using UCLibrary.UC;namespace UCLibrary.Page{ public class PageBase : System.Web.UI.Page { private UCBaseState _State = UCBaseState.UnLoad; /// <summary> /// 页面自定义控件的状态 /// </summary> public UCBaseState State { get { return _State; } set { _State = value; } } public PageBase() { this.Load += SetUCBaseStateToFirst; this.Unload += SetUCBaseStateToEnd; } protected virtual void SetUCBaseStateToFirst(object sender, EventArgs e) { this.State = UC.UCBaseState.FirstLoading; } protected virtual void SetUCBaseStateToEnd(object sender, EventArgs e) { this.State = UC.UCBaseState.End; } }}
使用的方式就是用户自定义控件都继承UCBase,页面都继承PageBase,
只运行一个的代码就写在OnFirstLoading里
demo下载,不用积分的:demo下载
本人是菜鸟,很多不足之处,请多多指出,谢谢。
- asp.net 避免用户自定义控件的父类代码多次运行
- asp.net用户自定义控件的方法
- 关于Asp.Net中避免用户连续多次点击按钮,重复提交表单的处理
- ASP.NET自定义用户控件
- asp.net的自定义控件和用户控件的区别
- 【ASP.NET】用户控件和自定义控件的主要区别
- 【asp.net】用户控件&自定义控件
- asp.net 防止用户重复多次登录实例代码详解
- 解决Asp.net中翻页问题的自定义用户控件
- Asp.net中翻页问题的自定义用户控件
- ASP.net 中用户自定义控件的使用
- 解决Asp.net中翻页问题的自定义用户控件
- Asp.net中翻页问题的自定义用户控件
- Asp.net中用户自定义控件 ascx的使用
- ASP.NET中用户自定义控件(WebUserControl)的使用
- Asp.Net 可自定义分页用户控件
- asp.net WebForm之用户自定义控件
- ASP.NET中的用户控件和用户自定义控件
- 自动检测汉字GB18030编码与UTF-8编码
- spring的内嵌事务问题
- C++中extern “C”含义深层探索
- delphi INI 文件
- VisionMobile:2011年智能手机数据
- asp.net 避免用户自定义控件的父类代码多次运行
- javascript
- ShopQi 搜藏下
- 《C++Primer》3.15重载操作符与转换
- 类图中的关联类
- 第四周实验报告 任务二
- struts1.2导言
- 转发的 php curl 使用
- gcc中 __asm__ 和 asm 的区别