DTcms網站僞靜態邏輯

咱們以前寫僞靜態就是web.config裏面配置好。-->配置僞靜態(URL重寫),DTcms網站寫的僞靜態跟以前的不同,他是靜態頁面和代碼現實了分離。http://demo.dtcms.net/ 演示網站php

在看本篇文章以前,須要準備一下基本知識html

HttpHandler(處理程序) 和 HttpModule(託管模塊)web

HTML頁面生成ASPX頁面正則表達式

HttpContext.RewritePath數據庫

固然,你的正則表達式也必須瞭解,以及如何在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後臺代碼同樣的。它這裏把頁面和代碼徹底分離開來了。

 基本原理就是這樣了。這裏並無取研究它的代碼細節。

相關文章
相關標籤/搜索