遗忘海岸

江湖程序员 -Feiph(LM战士)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

基于页面继承的代码重构


   通常信息发布与修改表单基本类似,一般情况下都会把两张表单做在一个页面,这样在页面上添加两个按钮,一个是新增一个是修改,根据传入的参数包含有效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类型的,以便子页面重写

posted on   遗忘海岸  阅读(336)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示