佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > LiteralControl ASP.NET中的另類控件

LiteralControl ASP.NET中的另類控件

熱門標(biāo)簽:科大訊飛語(yǔ)音識(shí)別系統(tǒng) Mysql連接數(shù)設(shè)置 團(tuán)購(gòu)網(wǎng)站 服務(wù)器配置 Linux服務(wù)器 銀行業(yè)務(wù) 電子圍欄 阿里云
首先看一個(gè)aspx文件里的部分內(nèi)容:
復(fù)制代碼 代碼如下:

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
html xmlns="http://www.w3.org/1999/xhtml">
head id="Head1" runat="server">
title>/title>
/head>
body>
form id="form1" runat="server">
/form>
/body>
/html>

我們知道ASP.NET會(huì)把這個(gè)文檔解析成類似Dom的控件樹,控件樹是分層、遞歸的。其中最頂層的是頁(yè)面Page,那么現(xiàn)在要問,Page的下一層有多少個(gè)控件?
答案是5個(gè),可以輸出this.Page.Controls.Count的值驗(yàn)證一下。它是怎么解析的呢?
第一個(gè):從!DOCTYPE到transitional.dtd">\r\n
第二個(gè):從head id="Head1"到/head>,類型為HtmlHead;
第三個(gè):包括/head>后面的\r\n\body>\r\n\t
第四個(gè):從form id=到/form>,類型為HtmlForm;
第五個(gè):從/form>后面的\r\n到最后。
其中第二個(gè)和第四個(gè)屬于Html控件,而第一、三、五個(gè)則屬于靜態(tài)文本,ASP.NET將其解析成LiteralControl。LiteralControl既不是Web控件,也不是Html控件,自成一類,表示 HTML 元素、文本和 ASP.NET 頁(yè)中不需要在服務(wù)器上處理的任何其他字符串。幾乎可以說,LiteralControl是ASP.NET中肯定用到的控件,只是你可能不知道而已。
關(guān)于LiteralControl,有幾點(diǎn)說明:
1. LiteralControl也可以有ID、ClientID和UniqueID,但一般很少用到。除了用FindControl方法外,給其設(shè)置ID沒有什么意義。
2. LitrelControl不具有視圖狀態(tài),雖然它也有一個(gè)EnableViewState屬性,但不起作用,回發(fā)后先前更改的狀態(tài)必丟失。
3.由于表示的是靜態(tài)文本,所以無(wú)法為L(zhǎng)itrelControl本身設(shè)置任何樣式。
4. 后臺(tái)通過其Text屬性獲取和設(shè)置值。
.net LiteralControl詳解
對(duì)于LiteralControl控件的應(yīng)用比較少,今天突然看到了,就弄個(gè)明白為好,所以總結(jié)出來(lái),供大家一起學(xué)習(xí)。
第一,自己做測(cè)試
復(fù)制代碼 代碼如下:

html xmlns="http://www.w3.org/1999/xhtml">
head runat="server" id="head1">
title >無(wú)標(biāo)題頁(yè)/title>
/head>
body id="body1">
form id="form1" runat="server">
div id="div1">
div id="div2">
/div>
/asp:Panel>
/div>
/form>
/body>
/html>

以上代碼在讀取最外層控件所有類型時(shí):
System.Web.UI.LiteralControl-
System.Web.UI.HtmlControls.HtmlHead-head1
System.Web.UI.LiteralControl-
System.Web.UI.HtmlControls.HtmlForm-form1
System.Web.UI.LiteralControl-
可以看到有五個(gè)控件,其中兩個(gè)服務(wù)器控件head和form。但是別的三個(gè)又是什么呢?
其實(shí)很簡(jiǎn)單:舉個(gè)例子,如果頁(yè)面上有一個(gè)服務(wù)器控件,ASP.net將會(huì)創(chuàng)建兩個(gè)LiteralControl對(duì)象,分別代表這個(gè)控件之前和之后的靜態(tài)內(nèi)容。兩個(gè)服務(wù)器控件,相應(yīng)的就有三個(gè)LiteralControl對(duì)象。再看個(gè)例子
復(fù)制代碼 代碼如下:

html xmlns="http://www.w3.org/1999/xhtml">
head runat="server" id="head1">
title >無(wú)標(biāo)題頁(yè)/title>
/head>
body id="body1">
bogy343242
form id="form1" runat="server">
div id="div1">
asp:Panel ID="Panel1" runat="server" Height="50px" Width="125px">
div id="div2">
/div>
/asp:Panel>
/div>
/form>
這應(yīng)該是form結(jié)束的地方
/body>
122233
/html>

顯示外層的控件類型及其ID(LiteralControl顯示其中的HTML文本)如下:
System.Web.UI.LiteralControl-
***text: 1231232321 html23232
System.Web.UI.HtmlControls.HtmlHead-head1
System.Web.UI.LiteralControl-
***text: /headerefefe bogy343242
System.Web.UI.HtmlControls.HtmlForm-form1
System.Web.UI.LiteralControl-
***text: 這應(yīng)該是form結(jié)束的地方 122233 5556665
這個(gè)例子很明顯的說明,在兩個(gè)服務(wù)器控件之間的文本控件就是這樣的內(nèi)容。
第二,應(yīng)用
LiteralControl 類
表示 HTML 元素、文本和 ASP.NET 頁(yè)中不需要在服務(wù)器上處理的任何其他字符串。
ASP.NET 將所有不需要服務(wù)器端處理的 HTML 元素和可讀文本編譯為該類的實(shí)例。例如,在開始標(biāo)記中不包含 runat="server" 屬性/值對(duì)的 HTML 元素將被編譯為 LiteralControl 對(duì)象。LiteralControl 對(duì)象不維護(hù)視圖狀態(tài),因此必須針對(duì)每個(gè)請(qǐng)求重新創(chuàng)建 LiteralControl 對(duì)象的內(nèi)容。
文本控件的行為與文本容納器一樣,這意味著可以從文本控件提取文本,并通過父服務(wù)器控件的 Controls 屬性從父服務(wù)器控件的 ControlCollection 集合中移除文本控件。因此,當(dāng)開發(fā)從 LiteralControl 類派生的自定義控件時(shí),確保由控件自己執(zhí)行任何所需的預(yù)處理步驟,而不是使用對(duì) LiteralControl.Render 方法的調(diào)用來(lái)完成這些操作。通常,都會(huì)這樣做以提高 Web 應(yīng)用程序的響應(yīng)時(shí)間。
可以以編程方式分別使用 ControlCollection.Add 或 ControlCollection.Remove 方法,從頁(yè)或服務(wù)器控件添加或移除文本控件。
代碼:
復(fù)制代碼 代碼如下:

HtmlTableCell c = new HtmlTableCell();
c.Controls.Add( new LiteralControl("行 " + j.ToString() + ", 列 " + i.ToString()) );
r.Cells.Add(c);

這樣做的目的就是為了提高web應(yīng)用程序的響應(yīng)時(shí)間,其實(shí)質(zhì)跟寫成c.InnerHTML=""是一樣的,不過就是套用了面向?qū)ο蟮乃枷攵选?
您可能感興趣的文章:
  • C#調(diào)用百度翻譯實(shí)現(xiàn)翻譯HALCON的示例
  • 關(guān)于安裝halcon包pycharm提示不全的問題
  • phalcon model在插入或更新時(shí)會(huì)自動(dòng)驗(yàn)證非空字段的解決辦法
  • phalcon框架使用指南
  • C++ Qt之halcon讀取像素項(xiàng)目過程詳解

標(biāo)簽:大理 衡水 萍鄉(xiāng) 棗莊 廣元 江蘇 蚌埠 衢州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《LiteralControl ASP.NET中的另類控件》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    新晃| 静安区| 汽车| 林甸县| 望奎县| 土默特左旗| 长丰县| 娱乐| 六枝特区| 拜城县| 政和县| 师宗县| 禄劝| 嘉兴市| 松滋市| 屯昌县| 仁布县| 屏边| 奎屯市| 馆陶县| 灵丘县| 永吉县| 宿迁市| 珲春市| 大石桥市| 商都县| 博乐市| 景泰县| 普格县| 渝中区| 南昌市| 申扎县| 镇平县| 如东县| 阳春市| 涿鹿县| 开阳县| 鄂托克前旗| 天柱县| 七台河市| 通河县|