天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

談談ASP.NET皮膚機制的實現

  做一個WEB程序,能夠在盡量修改極少程序代碼的情況下,輕松制定皮膚以及切換皮膚,應該都是需要的,誰也不想,在網站界面想要改版的時候,要改一大片邏輯代碼。

  一個合格的皮膚機制體系的實現,應該要做到以下幾點:

  • ->頁面模板上要極少擁有邏輯代碼(如果模板上擁有大量邏輯代碼,那估計這個也不叫作模板了)。
  • ->能夠輕松改變頁面布局,同時不影響程序代碼(.cs)。
  • ->新模板的定制,基本上能由皮膚制作者參照舊模板自行完成,不需要開發人員太多介入。
  • ->保持性能。

  然后,來看看,都有哪些方法大家用來實現所謂的皮膚機制,同時進行各個方法的一些個人說明。

  1.      改變頁面調用的CSS文件來換膚。

  這一個,嚴格上來講,不應該算作皮膚機制。雖然CSS非常強大,也能夠通過它來任意改變頁面元素布局,但它的HTML始終是不變的,所以局限性是非常大的。

  優點:完全不影響性能,甚至可以完全不由服務端代碼來管理它的變換,可以使用JS來切換皮膚(由此,在我們有一套完美皮膚機制的情況下,這種方法,可以完全不與此機制沖突,讓用戶在客戶端作更多的個性化)。

  缺點:如果作為核心皮膚機制的話,非常有局限性。

  示例:如QQ.COM, 114LA.COM上面的一些可點擊的小色塊,就是改變調用的CSS文件來實現換膚。

  2.      讀取模板文件,替換標識符為要顯示的內容與數據輸出。

      這一個方法的靈活性比較高,每套皮膚可以有自己的布局,有自己的個性。

  實現:比如模板中有一個標識$Subject,程序代碼會把它替換成文章標題,然后有一個標識塊<!—Loop[ArticleList]--><h1>$Subject</h1><div>$Content</div><!--/Loop-->,程序代碼會把它替換成一個文章列表,最后輸出處理完所有標識符的內容。

  通常,我們會緩存讀取到的模板內容,但字符串的替換始終不可避免,或者也會把替換過的內容也緩存起來,但這樣子,就等于要緩存模板內容以及替換過的內容,占用了兩份似乎挺重復內容的內存(為什么?不然總不該每次數據有改變的時候就去作IO操作讀取操作讀模板文件吧,這似乎比字符串替換性能更差)。

  優點:模板靈活程度很高,可以隨便改動頁面布局。

  缺點:影響性能,開發人員維護難,必須有特定的標識符來表示頁面變量,后期維護可能會帶來非常多的問題。

  3.      使用ASP.NET的App_Themes。

  這一個方法,應該是極差的一個方法,根本只是ASP.NET的一個小纂頭,雞肋,基本上不實用。

  實現:比如,定制一個BUTTON的樣式是這樣子的,<ASP:buttonrunat="server" BackColor="lightblue"ForeColor="black" />,類似這樣的代碼,存在于.skin文件中。然后它的換膚機制如下,<%@ Page Language="C#" Theme="default" %>。在App_Themes目錄下,是各套皮膚的獨立文件夾,各個文件夾包含皮膚的樣式以及圖片文件等等,也可以包含.skin文件。

  優點:只有ASP.NET才有

  缺點:包含了第一種方法的缺點,.skin的樣式定制方式還要嚴重依賴使用ASP.NET服務端控件,同時也影響性能,靈活性也極低。

  4.      動態載入.ASCX文件(ASP.NET用戶控件)|| 使用.master(母版)。

  這個方法,應該也是很多使用ASP.NET的人使用的方法,有時候,它還會與第三種方法結合使用。如果對性能需求不是很嚴格的話,中小型項目可以使用。

  實現:使用LoadControl()動態載入.ASCX文件或(與)指定頁面的MasterPageFile(目標皮膚文件夾的)實現(通常.ascx與.master還會結合使用)。

  優點:靈活性極高,每個皮膚有獨立的布局,直接使用了.CS文件的變量與方法ETC…甚至每套皮膚還有自己獨立的代碼文件。

  缺點:影響性能。有興趣可以自己去反編譯LoadControl方法。同時,在頁面要使用<%%>這種代碼塊,有時候感覺也有點不雅。

  5.      Xml + xslt

  傳說xml取代html是趨勢??不清楚,不了解。應該不可能。此種方法我沒有深入了解過,不過大概實現應該是要這樣子?每一個XML(輸出數據)會有一個對應的XSL文件(控制樣式)。如下:

xml文件:
<?xml version="1.0"encoding="ISO-8859-1" ?>

<breakfast_menu>
<food>
<name>Belgian Waffles</name>
<price>$5.95</price>
<description>two of our famous Belgian Waffles with plenty of real maplesyrup</description>
<calories>650</calories>
</food>

<food>
<name>Cakes</name>
<price>$1.95</price>
<description>sweet cakes</description>
<calories>2650</calories>
</food>

</breakfast_menu>

NET技術談談ASP.NET皮膚機制的實現,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 中文在线日韩亚洲制服 | 精品无码国产污污污免费网站2 | 免费观看99热只有精品 | 亚洲无吗视频 | 国产亚洲AV无码成人网站 | 免费又黄又硬又爽大片 | 黄片长版看嘛 | 亚洲中文字幕一二三四区苍井空 | 4虎最新网址 | 久久精品成人免费网站 | 毛片免费播放 | 人妻中文字幕乱人伦在线 | 久久亚洲高清观看 | 亚洲色欲色欲WWW在线成人网 | 日韩亚洲视频一区二区三区 | 国内精品乱码卡一卡2卡三卡新区 | 视频一区二区三区蜜桃麻豆 | 国产精品人妻一区免费看8C0M | 一扒二脱三插片在线观看 | 麻生希快播在线 | 国产美女视频一区二区二三区 | 熟女久久久久久久久久久 | 超碰视频97av| 黄瓜视频苹果直接安装 | 亚洲国产系列一区二区三区 | 国产午夜人做人免费视频中文 | 亚洲第一国产 | 阿娇和冠希13分钟在线观看 | 国产成人精品综合在线观看 | 末班车动漫无删减免费 | 超碰免费碰免费视频 | 久久婷婷五月免费综合色啪 | 火影小南被爆羞羞网站 | 秋霞电影网视频一区二区三区 | 国产精品久久人妻无码网站一区无 | 国产人妻麻豆蜜桃色 | 亚洲女初尝黑人巨磁链接 | 国产乱辈通伦影片在线播放亚洲 | 乌克兰内射私拍 | 秋霞午夜一级理论片久久 | 亚洲欧美精品一中文字幕 |