基于页面继承的代码重构
通常信息发布与修改表单基本类似,一般情况下都会把两张表单做在一个页面,这样在页面上添加两个按钮,一个是新增一个是修改,根据传入的参数包含有效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类型的,以便子页面重写
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 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的设计模式综述