博客
关于我
秋色园QBlog技术原理解析:Module之页面基类设计(五)
阅读量:426 次
发布时间:2019-03-06

本文共 1244 字,大约阅读时间需要 4 分钟。

1:介绍整体文件夹和文件的作用

2:介绍秋色园业务处理流程

3:介绍如何实现无后缀URL

4:介绍URL如何定位到处理程序

ps:下载地址:

本节将为大家介绍如何设计一个页面的基类,并解析该基类的设计方案。

传统的页面基类通常继承自System.Web.UI.Page,如下所示:

共用页面基类 public class PageBase : System.Web.UI.Page { }

继承的原因包括:

1:为了处理某些共同逻辑,减少代码复制,统一处理某些事情

2:基于开发习惯,需要使用丰富的服务器控件和ViewState等功能

3:早已习惯WebForm开发,尽管最近MVC开发逐渐流行

在一些内部系统或站点管理后台中,我常用该基类来处理以下内容:

1:用户权限管理

2:常见方法封装,包括服务端方法和脚本方法

3:列表控件(如Repeater、DataList、GridView)的进一步控制

4:其他功能

System.Web.UI.Page类的继承结构如下:

public class Page : TemplateControl, IHttpHandler { public const string postEventArgumentID = "__EVENTARGUMENT"; public const string postEventSourceID = "__EVENTTARGET";
public Page()  {  }

其关键点在于:

为了实现与丰富的服务器控件打交道,继承自TemplateControl,并引入ViewState

同时也被世人所鄙视,甚至将网站运行慢的原因归咎于ViewState

有部分人选择MVC的原因之一就是避免ViewState,并且得到更干净的HTML输出。例如:

在站点的HTML源代码中,很难找到ViewState的影子时,人们会误以为是MVC开发的

但实际上,这并不意味着一定是MVC开发的

没有ViewState并不一定是MVC开发的,可能是通过截断输出并对HTML进行替换处理

接下来,我们将设计一个属于自己的页面基类,继续这个话题。

基类设计原则:

该基类继承自IHttpHandler

如:

public abstract class HttpCustom : IHttpHandler

具体实现包括:

创建属于自己的页面生存周期方法

如:

public static void RegisterPageLifeCycle(object sender, EventArgs e)

在流程中:

创建Default.ashx处理程序,继承自HttpCustom

并重写Page_Load方法

最终实现了属于自己的页面生存周期

总结:

本节介绍了传统Page基类的使用,并展示了我们如何设计一个自定义基类HttpCustom,继承自IHttpHandler

下一节将解析如何实现页面的加载与呈现,以及如何处理事件请求

转载地址:http://qrwuz.baihongyu.com/

你可能感兴趣的文章
PROFINET 模拟器使用教程
查看>>
Program type already present: android.support.v4.widget.EdgeEffectCompat
查看>>
PyTorch中文版官方教程来啦(附下载)
查看>>
Progress Kemp LoadMaster 远程命令执行漏洞复现(CVE-2024-1212)
查看>>
Project configuration is not up-to-date with pom.xml. Run Maven->Update Project
查看>>
Project Euler 15 Lattice paths
查看>>
Project Euler 48 Self powers( 大数求余 )
查看>>
Project Euler Problem 12: Highly divisible triangular number
查看>>
ProjectEuler 2
查看>>
projection介绍及EPSG:4326和EPSG:3857的投射转换
查看>>
project打开文件时,显示无法识别此文件格式?
查看>>
Prometheus + Grafana on Kubernetes部署
查看>>
prometheus + grafana进行服务器资源监控
查看>>
Prometheus Alertmanager 告警配置详解
查看>>
Prometheus Grafana 展示平台
查看>>
Prometheus pushgateway使用详解
查看>>
Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关
查看>>
Prometheus 云原生 - 基于 file_sd、http_sd 实现 Service Discovery
查看>>
Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用
查看>>
Prometheus 云原生 - 监控 Linux、MySQL、Redis、RabbitMQ、Docker、SpringBoot 3.x
查看>>