日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

英语阅读推荐:主题切换控件 ExpressionBuilder

發(fā)布時間:2023/12/19 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 英语阅读推荐:主题切换控件 ExpressionBuilder 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

這里是Cat in dotNET的Random Clippings系列,專門向大家推薦.NET相關(guān)的英文技術(shù)文章,每期推薦兩篇文章,第一篇適合于英語技術(shù)文章閱讀的入門者練習(xí)閱讀能力,而第二篇則適合于進階練習(xí)與技術(shù)學(xué)習(xí)。

主題切換控件 (Theme Switcher Control)

大家都用過ASP.NET 2.0的主題了吧,在為網(wǎng)站增加幾個不同的主題后很多人都會發(fā)現(xiàn)了一個問題,那就是系統(tǒng)不提供一個控件給用戶自由選擇他們當(dāng)前所想看到的主題。這篇文章告訴你如何繼承自ListBox做一個簡單的主題切換控件,讓用戶可以隨時更改他們?yōu)g覽時所選用的主題。

既然是閱讀訓(xùn)練專題,那么我們就來慢慢看它的介紹。首先Introduction介紹了這個控件,"persistent through the use of a cookie"讓我們了解到用戶的選擇將通過Cookies來持久。

然后Using the control告訴我們?nèi)绾问褂眠@個控件,包括添加主題、添加配置信息到web.config和添加控件到頁面這3個步驟。這3個步驟對于大家來說都很容易,看著說明來做就是了:

  • Add multiple themes - 添加多個主題,這個在VS2005中很容易完成,首先通過添加ASP.NET特殊目錄添加App_Theme目錄,然后在其下面添加子目錄作為主題,并且放入相關(guān)的css文件和skin文件。
  • Add the Http Module handler - 添加Http Module配置,這只需要打開web.config并將文章中加亮的代碼放到正確的那一節(jié)就行了。
  • Create a page for switching themes - 創(chuàng)建切換主題的頁面,這包括通過@Register命令注冊控件和使用控件兩步,這個控件有兩個屬性可以設(shè)置。
    • "Set the AllowNoTheme property to 'true' if you want to allow the user to choose no theme at all",意思是設(shè)置AllowNoTheme屬性為true后用戶將能夠選擇無主題。
    • "set the NoThemeText property if you don't want to use the default text 'none'",無主題的選項默認顯示為"none",而你可以通過NoThemeText屬性更改此文本信息。
  • 注意"Add the Http Module handler"這一節(jié)下面有個Warning,"this setting causes a server error in every page having a <head> tag without the runat="server" attribute",意思是說如果頁面的<head>標簽沒注明runat="server"則會導(dǎo)致錯誤。

    接著How it works解釋了這個控件是怎么工作的,代碼是很容易讀懂的。控件繼承自ListBox,通過使用IO有關(guān)的類遍歷App_Theme下的子目錄并在ListBox中將它們的名稱顯示出來,然后根據(jù)用戶選擇保存Cookies。另外還有一個IHttpModule,它在PreRender階段進行處理,如果處理當(dāng)前請求的IHttpHandler是一個Page對象,那么它就根據(jù)Cookies為此Page應(yīng)用主題。

    最后Known issues,也就是“已知問題”,它說明了如果使用了Server.Transfer則目標Page無法正常應(yīng)用Theme。為什么呢?大家可以自己思考一下,這和它應(yīng)用Theme的方式有關(guān)。

    ExpressionBuilder (The CodeExpressionBuilder)

    "A very exciting new feature in ASP.NET 2.0 is Expression Builders",沒錯,ExpressionBuilder確實是ASP.NET 2.0中一個讓人興奮的新功能,它讓我們方便的在SqlDataSource上聲明性設(shè)置ConnectionString:<%$ ConnectionStrings: MyConnectionString %>,又或者是使用語言資源:<%$ resources: ResourceKey %>。

    除了這些功能以外,它還能干什么呢?"Now lets take it one step further",讓我們邁步走遠一點來看看。

    可能很多人都嘗試過這樣設(shè)置屬性:Text="<%= DateTime.Now %>",但發(fā)現(xiàn)會導(dǎo)致錯誤。而使用文章中提供的CodeExpressionBuilder后,你可以這樣做:Text="<%$ Code: DateTime.Now %>",并且得到你之前預(yù)期的效果。

    到底這是怎么實現(xiàn)的呢?通過閱讀上面引用的文章,你就知道其中的奧妙以及ExpressionBuilder的強大了。Infinities Loop的文章是非常好讀的,中間通過大量的加亮代碼或截圖來解釋說明,可以好像看連環(huán)畫一樣僅看圖不看字。

    最后,如果你覺得Random Clipping的推薦不錯,可以考慮長期訂閱Cat in dotNET,這樣你將不會錯過將來的任何一篇推薦。這是我第一次寫這個系列,大家有什么好的建議可以直接在評論中寫,例如希望更加側(cè)重英語方面的解釋或者更加側(cè)重技術(shù)方面的解釋,又或者希望增加推薦文章的數(shù)量,我會根據(jù)評論在下一期中改進的。

    轉(zhuǎn)載于:https://www.cnblogs.com/cathsfz/archive/2006/12/02/580142.html

    總結(jié)

    以上是生活随笔為你收集整理的英语阅读推荐:主题切换控件 ExpressionBuilder的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。