MVC3生成純靜態後如何不再走路由直接訪問靜態頁面

2021-06-22 06:23:38 字數 2917 閱讀 6537

問題描述:高訪問量型別的電子商務**,需要將一些不是經常變化的頁面生成靜態頁面,然後普通使用者就可以直接訪問這些靜態頁面而不用再訪問需要連線資料庫的動態頁面。那麼asp.net mvc3中如何做到這一點呢?

注意圖中標示的紅色部分就是我們要實現的部分,實現如下:

1 新建myhandler.cs

}2. web.config中加入以下**,才會執行自定義的管道處理類

1:  

2:  

"mvctest.myhandler" type="mvctest.myhandler"/>

3:  

執行一下自己的**,看看效果你就全明白了!

1:  

private2: eventargs e)

3:
20:
21:
22:              }
思路大體如此。

最近使用asp.net mvc3開發b2c電子商務系統,為了seo的優化工作,需要通過路由實現偽靜態url,後續再根據需要生成真正的靜態頁面,不直接走路由訪問具體的頁面。現在開始研究第一步,如何定義自己的路由規則,達到偽靜態的功能需求。

基本實現原理如下圖:

首先,關於命名空間。

路由的功能是為了讓所有asp.net**開發都可以使用,所以dll並沒有在mvc中,而是在system.web中的system.web.routing。

現在我們為了我們實際的需求,實現mvc3中的自定義路由功能(繼承routebase,重寫routedata和virtualpathdata)。

下面的例子實現以下目的:輸入乙個youdomin.com/product/123.html,執行testcontroller中index.

第一步:實現testroute類

1 routedata 每次訪問url都會從此入口

}上面例子中,我們根據判斷url中是否符合某個特定的值來特定執行特定controller和特定action,沒有就返回null。

第二步,在global.aspx中註冊我們自己的路與規則:

public static void registerroutes(routecollection routes)

.axd/");

routes.add(new testroute("product"));

routes.maproute(

"default", // route name

"//", // url with parameters

new  // parameter defaults

);

}

routes.add(new testroute("product"));

註明:testroute 是上面我們自己定義的路由,實現routebase的類。

第三步:新建第一步中測試用的controller

public class testcontroller:controller

}

第四步:新建乙個檢視

@

@viewdata["t"].tostring()

第五步,直接輸入url測試

比如:後續補充:

主要內容:如何讓前台列表展示頁顯示以上5步中實現的偽靜態url?

經過實際驗證,發現routebase中virtualpathdata的實現就能解決以上問題。.net route其實已經實現了這個雙向解析的問題,通過輸入url,從routedata進入,根據自己的路由規則進行解析到相對應的controller和action,然後在使用url.action的地方從virtualpathdata解析出符合路由規則的url位址,具體**如下:?

publicoverridevirtualpathdata getvirtualpath(requestcontext requestcontext, routevaluedictionary values)

else

returnnull;

}

可以替換第一步中testroute類中的getvirtualpath方法,檢視實際效果。

數學 3 生成函式

生成函式是乙個比較複雜且廣泛的數學知識點,應當重點學習 首先給出一些運算公式,方便以後學習使用 texttt begin alpha f z beta g z sum alpha f n beta g n z n z mg z sum ng z n m geq0 fracz sum g z n m ...

ThinkPHP 3 2 生成靜態頁面

1 在根目錄下的全域性index.php中加下面這行 define html path htm 生成靜態頁面的檔案位置 2 在專案的配置檔案config.php中加下面這行 html file suffix html 預設靜態檔案字尾 3 在需要生成靜態頁的action裡加入下面顯紅的 public...

Python3生成密碼

使用python3實現簡單的密碼生成功能,隨機且隨意。這裡只是乙個簡單的例子,有必要的話可以深入研究一下。time 2019 9 12 18 24 author 統哥哥 file password generato.py software pycharm import string import r...