咱们以前写伪静态就是web.config里面配置好。-->配置伪静态(URL重写),DTcms网站写的伪静态跟以前的不同,他是静态页面和代码现实了分离。http://demo.dtcms.net/ 演示网站php
在看本篇文章以前,须要准备一下基本知识html
①HttpHandler(处理程序) 和 HttpModule(托管模块)web
②HTML页面生成ASPX页面正则表达式
固然,你的正则表达式也必须了解,以及如何在C#中使用正则表达式。post
接下来到了咱们的正文,为了研究它这个伪静态仍是花了一点时间,弄懂后其实也没什么仍是比较简单的。网站
①须要你去下载源码 http://bbs.dtcms.net/forum.php?mod=viewthread&tid=2420&extra=page%3D1url
②安装数据库,而后修改web.config文件连接到本地数据库spa
③在index.aspx页面 修改 预览网站 的连接.net
④运行项目就能够正常查看了,你会看到URL地址都是*.html。
接下来就来一步步解析他的代码。
HttpHandler(处理程序) 和 HttpModule(托管模块) 有这篇文章咱们知道,如何一个页面继承了 ,每当页面打开以前都会去访问继承这个接口的页面。正好他的网站里面也有一个继承这个接口的类。在解决方案的这个位子。
看他里面的代码能够知道,主要就是作了一些数据的读取,而后判断你当前的页面是否支持URL重写,URL重写的规则在 urls.config 配置文件里面,能够看作就是一张表里面的数据,只是用某个方法保存在*.config文件里面了。这里用的时候就是相反,咱们把此配置里面的节点设置一个类来接受这个配置文件。咱们就能够读取此配置文件生成一个类的集合,而后对类的集合作操做,就是对这个配置文件操做。
HttpModule.cs类的最终目的就是这句代码,前面对咱们访问的*.HTML进行处理,最后导向 DTcms.Web\aspx\main 这个文件夹里面的*.aspx页面,由这个网站的本质和咱们以前了解的URL重写,其实URL伪静态的实质就是 地址栏中显示的*.html页面,直接访问的是 *.aspx页面。
那么问题来了, DTcms.Web\aspx\main 这个页面里面的 *.aspx是怎么来的,成了咱们主要关心的问题。它的后台样式演示网站有个生成模板功能,就是把HTML页面生成ASPX页面。
而后查看源码你会看到有个类,就是把HTML生成ASPX页面。而后你去查看这个页面的代码。
咱们能够发现,这个页面的原理:
配合这个 HTML页面生成ASPX页面
有一些正则表达式,而后对读取的HTML进行匹配,换成ASPX页面的代码,而后保存就能够了。
如何作数据交互?
既然咱们的ASPX页面都是HTML页面生成而来,那怎么作数据交互呢?那官网里面介绍了一些语法,用来写数据交互的http://www.dtcms.net/help/show-72.html。咱们在HTML页面用它规定的语法来写数据交互
注:你必须按照它规定的语法来写,由于它后台正则表达式都是写好了的,若是不是它规定的语法会解析不了,就不会生成正确的ASPX代码了。
例如页面上这个方法写了怎么来的。
咱们生成的ASPX页面都有这个
这个文件夹里面的类就是用来写后台代码的,就跟aspx页面对应的*.cs后台代码同样的。它这里把页面和代码彻底分离开来了。
基本原理就是这样了。这里并无取研究它的代码细节。