中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > .net 用戶控件(使用緩存)
[asp.net]C#教程 回到列表 創(chuàng)建一個ASP通用分頁類
 .net 用戶控件(使用緩存)

作者:planRED 時間: 2004-07-08 文檔類型:原創(chuàng) 來自:藍(lán)色理想

作者: planRED
 Email:
planred#163.com
 來自: http://api.533.net

這個緩存對象如果不知道還真是不會用,但是如果有例子則一看就明白,為了讓大家少走彎路,我就把這個投上來了,更多筆記請訪問我的小站

http://api.533.net

-----示例下載----------

ASP.NET 緩存功能是一項很重要的功能,而這其中使用最多的就是利用用戶控件實(shí)現(xiàn)的片段緩存。

有時候,緩存整個頁是不實(shí)際的;可能需要為每個請求動態(tài)創(chuàng)建頁的某些部分。在這些情況下,您可能值得花時間來標(biāo)識與需要大量的服務(wù)器資源來構(gòu)造的頁請求相關(guān)聯(lián)的對象或數(shù)據(jù)。一旦標(biāo)識了這些項,您就可以通過在 Web 窗體用戶控件中創(chuàng)建這些項將它們從頁的其他部分分離出來,然后在一段指定的時間中對這些項進(jìn)行緩存,以節(jié)省服務(wù)器資源。這就是通常所說的片段緩存。這項技術(shù)允許您將需要花寶貴的處理器時間來創(chuàng)建的頁的某些部分(例如數(shù)據(jù)庫查詢)與頁的其他部分分離開。您可以選擇允許為每個請求動態(tài)生成需要較少服務(wù)器資源的頁的部分。

要使用戶控件具有緩存功能,只要在.ascx文件的頂部添加 @OutoutCache 指令即可,關(guān)于這個指令的詳細(xì)內(nèi)容可以參看sdk文檔的這一部分:ms-help://MS.NETFrameworkSDKv1.1.CHS/cpgenref/html/cpconoutputcache.htm
下面我們來看常用的方式:

<%@ OutputCache Duration="30" VaryByParam="None"%>
上面是說緩存這個控件30秒,并且緩存內(nèi)容不隨任何指定參數(shù)發(fā)生變化。

下面我們可以用這個控件了,像通常的做法,就是在.aspx頁面用 @Register 指令聲明,并在頁面中添加。如果只是想在.aspx頁面就完成整個工作,那到這里一切就算完了。
<user:timex id="uctime" runat="server"></user:timex>

但是如果想在codebehind中使用控件的屬性,我的意思是說在.cs文件中指定屬性,或是動態(tài)加載一個用戶控件,那就得多花一些心思。
先來在codebehind中使用一下這個帶緩存的控件。

uctime.times=System.DateTime.Now.ToString();

times是這個控件的一個屬性,作用是指定控件中l(wèi)abel的text值。這個頁面在初次運(yùn)行時沒有任何問題,但是當(dāng)你刷新頁面后,就會發(fā)生錯誤,提示說這個控件根本就不存在!你還可以用動態(tài)加載的方式運(yùn)行一下這個例子,也會發(fā)生同樣的錯誤。
如果在頁中聲明并使用了為輸出緩存指定的用戶控件,則 ASP.NET 頁分析器將根據(jù)用戶控件的創(chuàng)建方式,對兩個對象類型中的一個類型進(jìn)行實(shí)例化。如果以聲明方式創(chuàng)建用戶控件,會添加 StaticPartialCachingControl 對象;如果使用 LoadControl 方法以編程方式創(chuàng)建用戶控件,會添加 PartialCachingControl 對象

上面的意思是:一旦你使用了一個具有OutoutCache內(nèi)容的用戶控件,系統(tǒng)會根據(jù)控件的創(chuàng)建形式相應(yīng)的建立新的緩存對象,然后在整個緩存周期內(nèi)一直使用這個新的緩存對象,而不是使用用戶控件本身。也就是說頁面初此加載時是使用的用戶控件本身,接下來在緩存周期內(nèi)就是使用的緩存對象。這就是為什么上面會出現(xiàn)錯誤的原因。

找到了原因,解決問題就簡單多了。我們可以在.cs中加一個判斷,然后為用戶控件本身和緩存對象分別添加屬性的賦值。(在這里說說辦法簡單,偶為了找這個答案可費(fèi)了大力氣了,不過最后還是csdn的高人幫偶解決了,嘿嘿)
這個還是得分頁面聲明和動態(tài)加載兩類來說。
先看頁面聲明時的做法:

protected prac2.uc_cache uctime;
private void Page_Load(object sender, System.EventArgs e)
{
   set();
}

private void set()
{
   if(uctime!=null)
   {
      uctime.times=System.DateTime.Now.ToString();
   }
}
先在codebehind中聲明控件,然后在使用屬性的時候判斷,如果控件不為空,就表示是初次加載。這個時候給屬性賦值。這樣當(dāng)頁面再次加載時,因?yàn)槭褂昧司彺,該流程就不進(jìn)了。但是屬性值依然存在。
再看動態(tài)加載時的做法:
protected System.Web.UI.WebControls.PlaceHolder placetime;
private void Page_Load(object sender, System.EventArgs e)
{
   loaduc();
}
private void loaduc()
{
//先是動態(tài)加載該控件,在初次加載時,其類型顯然是uc_cache
   Control ucc=LoadControl("uc_cache.ascx");
   placetime.Controls.Add(ucc);
   prac2.uc_cache uctime=null;
//第一次執(zhí)行的流程
   if(ucc is prac2.uc_cache)
   {
      uctime=(prac2.uc_cache)ucc;
   }
//第二次及其以后整個緩存周期執(zhí)行的流程
   else if(ucc is PartialCachingControl&&((PartialCachingControl )ucc).CachedControl!=null)
   {
      uctime=(prac2.uc_cache)((PartialCachingControl)ucc).CachedControl;
   }
//最后,給屬性賦值
if(uctime!=null)
{
   uctime.times=System.DateTime.Now.ToString();
}
}

這個就更加清楚的說明了緩存控件的工作原理,先是加載一個控件,然后根據(jù)是用戶控件本身還是緩存控件來分別進(jìn)行操作,最后給控件的屬性賦值。這段程序通過使用一個中間量來完成對控件屬性的操作,ucc是其中動態(tài)加載的控件,第一次的時候?yàn)橛脩艨丶,而到了第二次,就變成了一個緩存控件,程序分別對這兩次改變進(jìn)行不同的操作,最后的結(jié)果都是把ucc正確的賦給了uctime,最后uctime得以操作屬性。

在轉(zhuǎn)載精華部分的第13篇文章也是就該內(nèi)容展開的討論,實(shí)際上我就是看這篇文章才弄明白了PartialCachingControl的用法。
我在csdn的發(fā)帖的位置,感興趣的可以去看看:

http://community.csdn.net/Expert/TopicView.asp?id=3138685

到這里,用戶控件的基本內(nèi)容應(yīng)該就結(jié)束了。在以后的實(shí)踐中,應(yīng)該努力的學(xué)習(xí)怎么更好的使用這一強(qiáng)大的技術(shù)-用戶控件。

出處:藍(lán)色理想
責(zé)任編輯:藍(lán)色

◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論

作者文章
[asp.net]擴(kuò)展Forms驗(yàn)證
.net 用戶控件(使用緩存)
用 DataSet 對象更新數(shù)據(jù)
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計大賽開啟
國際體驗(yàn)設(shè)計大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2