基于页面继承的代码重构


   通常信息发布与修改表单基本类似,一般情况下都会把两张表单做在一个页面,这样在页面上添加两个按钮,一个是新增一个是修改,根据传入的参数包含有效Id(主键)来确定是添加还是修改,不过手上要做的表单稍有点复杂,添加跟修改布局不同,同时用户后台跟管理员使用表单也略有不同,为了避免大量重复代码决定采用页面继承方式来实现这4个表单.
首先页面中设置 Inherits属性<%@ Page Language="C#" EnableViewState="true" Inherits="BaseProductEidt" %>
 第一个问题是Page_Load事件
 如果在Base页中重写OnLoad方法,那么务必凋用base.OnLoad以触发字页面上定义的Page_Load事件
 //注意根据需要调用base.OnLoad(e) ,下面代码中是先完成初始化操作再执行子页面上的Page_Load过程.
    protected override void OnLoad(EventArgs e)
    {
        Response.Expires = -1;
        //先执行初始化操作
        if (!IsPostBack)
        {
            InitView();
            PreUpdate();
        }
        //执行页面上的Page_Load处理过程
        //OnLoad过程任务是触发(调用)绑顶的Page_Load过程
        base.OnLoad(e);
    }

 问题二访问子页面的控件
有如果帮助方法
    protected T Ctl<T>(string id)
        where T : class
    {
        T ctl = this.Form.FindControl(id) as T;
        return ctl;
    }
使用: Ctl<TextBox>("txtUrl").Text="http://www.wow52.cn/";

最后,将各页面需要区别处理的方法定义成virtual类型的,以便子页面重写

原文地址:https://www.cnblogs.com/wdfrog/p/1582463.html