国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net服務器端指令include的使用及優勢介紹

asp.net服務器端指令include的使用及優勢介紹

2019-11-04 13:21asp.net教程網 ASP.NET教程

將指定文件的內容插入 ASP.NET 文件中,包括網頁(.aspx 文件)、用戶控件文件(.ascx 文件)和 Global.asax 文件

asp.net中的服務端包括指令簡單點就是一個<!-- #include file|virtual="filename" –>這樣的指令,msdn中的名詞解釋是:將指定文件的內容插入 ASP.NET 文件中,包括網頁(.aspx 文件)、用戶控件文件(.ascx 文件)和 Global.asax 文件。插入靜態文件這個基本功能就不說了,插入aspx、ascx,這功能算是挺強了,asax哥就有點困惑了,這個暫且不管,今天要說的就是這個指令。

尷尬的存在
     服務器端包括指令在web的開發技術中肯定是個標配了。asp.net前身asp中就已經有了這個指令,做為唯一一個引用外部文件的指令,入門的開發人員都應該使用過;php中的include、require,幾乎用濫了,曾經使用過一段php,這指令常用的不能再常用了;jsp沒過開發經驗,搜索了下,也有這個include指令,使用情況應該也很平常。但是asp.net中的include幾乎是在被遺忘的角落里,讀過的asp.net的書里,很少會提到它。因此,對于沒有asp開發經驗直接學習asp.net的來說,可能要本不知道它的存在。為什么??

     造成尷尬存在原因之一,就是webform中最重要的功能之一:用戶控件。為什么要使用include,是因為被引用的內容會在很多地方被使用到--重用,例如頁頭、頁腳、網站功能塊。而恰恰用戶控件就是為此而生,它天生可重用的特性,及強大的控件事件流程,就如MSDN中所說:
     “盡管您仍然可以使用 #include 標記(通過將公共服務器端代碼、控件或 HTML 標記放入要包括在其他網頁中的文件內)以實現代碼重用,ASP.NET 常用的首選方法是使用 Web 用戶控件。用戶控件提供了一個面向對象的編程模型,并且提供了比服務器端包含文件更多的功能。”
微軟都不待見它了,緊接著,include也被開發人員打入冷宮,但是,請不要忘記,它存在。

include詳解
       說是詳解,其實不打算在這里詳解,請參見:服務器端包括指令語法。語法、用法、示例什么的,這里也不說,大家自己去看或自己試驗吧。

include優勢
       說到優勢,肯定要有個比較的對象了,對了,這個對象就是用戶控件。用戶控件是啥玩意,不解釋。

優勢之一:靜態文件的重用。

用戶控件功能強大,但是即使是簡單如靜態內容以用戶控件的形式實現,它也必須經歷用戶控件的生命周期,相比性能就差了。

你可能會說,現如今網站又有多少還能是純靜態的內容呢,譬如頁腳,那些項肯定也是網站CMS后臺管理的,怎么可能以靜態文件的形式存在,只能使用用戶控件,并且給用戶控件加上outputcache,這樣即保證了靈活性,性能也能有保證,這樣才是最完美的。

不錯,第一,不同的項目不同的需求,肯定有些時候就是會引用靜態內容,這時要保證使用這些靜態內容以靜態的形式存在,不要放到用戶控件里。第二,網站的優化,無論何時,總有一種觀點,就是靜態化,例如上邊的頁腳,我們可以通過生成一個靜態的頁腳文件,當CMS對這些項有修改時,重新生成這個文件,然后通過include方式引用,相對于緩存的不可預測性和一定的不可控性,優勢比用戶控件還要靈活,并且性能更好。第三,協作,就是對于比較大型的網站,頁面某些控件,但是這些數據是其它團隊負責的,而一些相對穩定的內容或者對變化不太敏感的內容,生成靜態文件之后自動分發,而對于這些文件的引用也是很常見的。

其實這個也可能是唯一的include的優勢了。

優勢之二,可穿透的封裝。

可重用的東西一般都是封裝的。用戶控件是一個獨立的個體,它寄宿于頁面,但本身卻像是頁面上一個自由王國,碰到王國內部的處理,頁面會把處理權交給控件自己的去處理,例如頁面page_load加載時,碰到控件只能調用控件提供的load處理方法,這就是控件的封裝,只有自身愿意公開的屬性和方法才能被頁面訪問,這是標準的封裝,這也是由asp.net的頁面生命周期決定的。因此,如果控件要使用寄宿頁面的一個變量,那么它應該公開一個屬性,然后由頁面在代碼里主動給它賦值。

同樣的,不同的機制決定了不同的行為。從MSDN中:

賦予 File 或 Virtual 特性的值必須用引號 ("") 括起來。在執行任何動態代碼之前處理被包含的文件。

重要的一句,在執行任何動態代碼之前處理被包含的文件。這句話什么意思??

一層意思就是說被包含文件在被處理之后內容才會加入到頁面中,動態代碼執行時,執行的代碼根本就區分不出來這塊內容是引用的還是自己本來就有的,也就是說我們可以用來重用的靜態文件里加入<% 代碼 %> 或者<%= 頁面變量 %> 這樣的代碼,它們會被頁面處理為相應的內容。這就是我所謂的“可穿透的封裝”。這種方法當然比控件公開屬性,頁面主動賦值要更靈活。

二層意思如果引用的aspx或ascx,那么會在引用的動態內容執行輸出之后,頁面代碼才會執行,這樣就不如用戶控件調用將流程在頁面內好了,盡量不要使用include引用動態頁面。

因此我們應只用include引用靜態文件,但是靜態文件里可以包含服務端標記代碼。

      知無不言,但怎奈能力有限,詞不達意,就當拋磚引玉吧。大家盡量看,不過可以肯定的是可以以靜態文件存在的重用就用include吧??赡苓€會有其它更適合的使用場景和更多的優勢,還請有充分經驗的補充。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日本久久综合 | 亚洲大片 | 国产免费自拍av | 欧美九九 | 欧美午夜精品一区二区三区电影 | 91国产精品 | 一区二区三区四区av | 日韩成人在线视频 | 欧美久久久久 | 毛片网站大全 | 国产精品区二区三区日本 | 久久亚洲国产精品 | 国产91久久久 | 国产精品久久综合 | 不卡一区 | 亚洲高清一区二区三区 | 亚洲精品中文字幕在线观看 | 免费一级片在线观看 | 亚洲精品一区二三区不卡 | 久久大陆 | 国产精品久久久久久久久大全 | 日日夜夜视频 | 夜夜骑日日操 | 国产精品网站在线观看 | 成人影院在线观看 | 国产精品久久久久久久久 | 人妖天堂狠狠ts人妖天堂狠狠 | 欧美日韩免费一区二区三区 | 81精品国产乱码久久久久久 | 国产成人精品一区二区三区福利 | 午夜激情视频在线 | 欧美中文字幕在线观看 | 久久国产精品亚洲 | 自拍偷拍第一页 | 一区二区在线视频 | av网站在线免费观看 | 国产宾馆自拍 | 91嫩草香蕉 | 久久专区 | 在线日本中文字幕 | 日韩av在线一区 |