博客
关于我
秋色园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/

你可能感兴趣的文章
Python: AES加密与解密
查看>>
Python: Range() 最大尺寸;动态的还是静态的?
查看>>
Python: Windows下用 multiprocessing 的深坑
查看>>
python:Could not find platform independent libraries <prefix>解决方法
查看>>
Python:datetime tzinfo 时区名称文档
查看>>
Python:deepcopy(list) vs new_list = old_list[:]
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:Google API - 从消息中获取 mimeTypes
查看>>
Python:subprocess.call,stdout to file,stderr to file,在屏幕上实时显示stderr
查看>>
Python:TypeError:无法连接“str“和“int“对象
查看>>
Python:XPath 在 ElementTree 中不可用
查看>>
Python:从 FTP 服务器下载文件
查看>>
python:从列表中创建元组列表
查看>>
Python:从嵌套列表中删除重复项
查看>>
Python:从间隔映射到值
查看>>
Python:使用 shell=False 的子进程调用不起作用
查看>>
Python:修改 PATH 环境变量的平台无关方式
查看>>
Python:假与 0
查看>>
Python:函数使用
查看>>
Python:函数进阶
查看>>