我们之前写伪静态就是web.config里面配置好。-->配置伪静态(URL重写),DTcms网站写的伪静态跟之前的不一样,他是静态页面和代码现实了分离。http://demo.dtcms.net/ 演示网站

在看本篇文章之前,需要准备一下基本知识

HttpHandler(处理程序) 和 HttpModule(托管模块)

HTML页面生成ASPX页面

HttpContext.RewritePath

当然,你的正则表达式也必须了解,以及如何在C#中使用正则表达式。

接下来到了我们的正文,为了研究它这个伪静态还是花了一点时间,弄懂后其实也没什么还是比较简单的。

①需要你去下载源码 http://bbs.dtcms.net/forum.php?mod=viewthread&tid=2420&extra=page%3D1

②安装数据库,然后修改web.config文件链接到本地数据库

③在index.aspx页面 修改 预览网站 的链接

④运行项目就可以正常查看了,你会看到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后台代码一样的。它这里把页面和代码完全分离开来了。

基本原理就是这样了。这里并没有取研究它的代码细节。

 
 

DTcms网站伪静态逻辑的更多相关文章

  1. 【Java Web】使用URLRewrite实现网站伪静态

    大部分搜索引擎都会优先考虑收录静态的HTML页面,而不是动态的*.jsp.*.php页面.但实际上绝大部分网站都是动态的,不可能全部是静态的HTML页面,因此互联网上大部分网站都会考虑伪静态——就是将 ...

  2. C#实现动态网站伪静态,使seo更友好

    本教程将使用Visual Studio 2013手把手教你实现webform动态页面的伪静态.本教程配套的C#源码工程可通过我的github下载.地址:https://github.com/shell ...

  3. .htaccess实现php网站伪静态

    伪静态是啥?很简单,就是假的静态网页...例如有个网页是:www.xxx.com/index.php?id=1这是动态网页,php后缀的如果改成:www.xxx.com/index-1.html那么这 ...

  4. ASP.NET网站伪静态下使用中文URL

    首先解释一下,什么是中文URL呢?它并不是我们常见的把汉字编码为 %CF%EC 这种形式,而是在URL中直接使用汉字 这种形式目前还不是很多见.因为不同的浏览器处理起来可能会有所不同,不过据我测试,I ...

  5. DTCMS 网站管理系统

    dtcms适合开发一些简单小型网站 开发的过程中遇见了各种问题,下面总结下我遇见的问题 1.遇见提示未开启生成静态功能 在系统设置里面将“伪URL重写”为“生成静态”可以解决 2.在生成静态页面的时候 ...

  6. [Windows Server 2003] 安装网站伪静态

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装IIS伪静 ...

  7. [Windows Server 2008] 安装网站伪静态

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装IIS伪静 ...

  8. DTcms iis6 伪静态 iis配置方法 【图解】

    1.右键点击 要设置网站的网站 2.属性 ——>主目录 ——>配置——> 3.如右侧窗口,找到 .aspx 扩展名——>编辑——>复制 可执行文件的路径——>关闭 ...

  9. 使用URL Rewrite实现网站伪静态

    下载urlwrite包 将urlrewrite-***.jar复制到web应用lib文件夹下 web.xml中配置URL Rewrite: 例: <filter> <filter-n ...

随机推荐

  1. C# 反射(Reflection)

    反射主要用于在程序运行期间动态解析相关类的类名,命名空间,属性,方法并进行相应操作,以下通过两个简单的例子进行了说明: 示例1:调用程序集内部方法,运行时动态获取相关类的信息,包括类名,命名空间等信息 ...

  2. select获取到option的value和text方法

    function getSelectval(id){ var selId = document.getElementById(id); //获取select的id var seleIndex =sel ...

  3. javascript实现移动端网页版阅读器

    现在手机上的文本阅读app已经非常丰富,良好的阅读体验与海量的书库常常令我感到无比兴奋. 我想到8年前用一点几寸屏幕的mp3看电子书的情景,顿生一种淡淡的温馨.再久远一些,小的时候,我也经常和小伙伴们 ...

  4. entity framework discriminator error

    前几天使用code first碰到错误:列名 'Discriminator' 无效.这是一个很少见的错误,搜索了很久才发现是code first的poco实体对象的继承问题. 比如,我定义了一个实体类 ...

  5. Python 科学工具笔记

    Python 科学工具笔记 numpy a = numpy.array([1,2,3,4]);// 创建一个numpy的数组对象 此时a.shape显示的值为(4,); 由此得出结论在一维的数组中, ...

  6. 再次梳理css3动画部分知识

    1.transform: 适用于2D或3D转换的元素 transform-origin:元素的位置点 css3转换(2D转换和3D转换):可以对元素进行移动.缩放.转动.拉长或拉伸. 2D转换:tra ...

  7. Redis学习1

    Redis 学习记录 简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zs ...

  8. Oracle 数据库 导入导出空表解决办法!

    expdp导出:(打开CMD) 先创建(任意盘符):\oracle_data 文件夹 1.sqlplus / as sysdba;2.create or replace directory d_nam ...

  9. webapi 开启跨域支持

    1.Global文件: GlobalConfiguration.Configuration.EnableCors(); 2.需要跨域的action或controller添加跨域规则 [EnableCo ...

  10. iOS中MD5加密字符串实现

    1.MD5加密 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321 ...