ASP.NET中Literal與Label控件的區(qū)別
來源:易賢網(wǎng) 閱讀:815 次 日期:2016-08-09 15:11:25
溫馨提示:易賢網(wǎng)小編為您整理了“ASP.NET中Literal與Label控件的區(qū)別”,方便廣大網(wǎng)友查閱!

一、方案和背景

Literal 控件表示用于向頁面添加內(nèi)容的幾個選項之一。對于靜態(tài)內(nèi)容,無需使用容器,可以將標(biāo)記作為 HTML 直接添加到頁面中。但是,如果要動態(tài)添加內(nèi)容,則必須將內(nèi)容添加到容器中。典型的容器有 Label 控件、Literal 控件、Panel 控件和 PlaceHolder 控件。

Literal 控件與 Label 控件的區(qū)別在于 Literal 控件不向文本中添加任何 HTML 元素。(Label 控件呈現(xiàn)一個 span 元素。)因此,Literal 控件不支持包括位置屬性在內(nèi)的任何樣式屬性。但是,Literal 控件允許指定是否對內(nèi)容進(jìn)行編碼。

Panel 和 PlaceHolder 控件呈現(xiàn)為 div 元素,這將在頁面中創(chuàng)建離散塊,與 Label 和 Literal 控件進(jìn)行內(nèi)嵌呈現(xiàn)的方式不同。

通常情況下,當(dāng)希望文本和控件直接呈現(xiàn)在頁面中而不使用任何附加標(biāo)記時,可使用 Literal 控件。

在 Literal 控件中編碼內(nèi)容

Literal 控件支持 Mode 屬性,該屬性用于指定控件對您所添加的標(biāo)記的處理方式??梢詫?Mode 屬性設(shè)置為以下值:

·Transform. 將對添加到控件中的任何標(biāo)記進(jìn)行轉(zhuǎn)換,以適應(yīng)請求瀏覽器的協(xié)議。如果向使用 HTML 外的其他協(xié)議的移動設(shè)備呈現(xiàn)內(nèi)容,此設(shè)置非常有用。

·PassThrough. 添加到控件中的任何標(biāo)記都將按原樣呈現(xiàn)在瀏覽器中。

·Encode. 將使用 HtmlEncode 方法對添加到控件中的任何標(biāo)記進(jìn)行編碼,這會將 HTML 編碼轉(zhuǎn)換為其文本表示形式。例如,<b> 標(biāo)記將呈現(xiàn)為 <b>。當(dāng)希望瀏覽器顯示而不解釋標(biāo)記時,編碼將很有用。編碼對于安全也很有用,有助于防止在瀏覽器中執(zhí)行惡意標(biāo)記。顯示來自不受信任的源的字符串時推薦使用此設(shè)置。

二、Literal和Label到底有什么區(qū)別

label在經(jīng)服務(wù)器處理后轉(zhuǎn)換成客戶端網(wǎng)頁時候使用html的<span>標(biāo)記為住控件,而Literal則是什么標(biāo)記都不帶 。

例如:<span id="Label1">Label</span>(label的客戶端代碼)

<b>....</b>(Literal的客戶端代碼)

literal不可以運用樣式。定位布局比較麻煩。在您要以編程方式設(shè)置文本而不添加額外的 HTML 標(biāo)記時,可以向頁面添加 Literal Web 服務(wù)器控件。在要向頁面動態(tài)添加文本而不添加任何不屬于該動態(tài)文本的元素時,Literal 控件非常有用。例如,您可以使用Literal 控件來顯示從文件或流中讀取的 HTML。如果要顯示靜態(tài)文本,則可以使用 HTML 呈現(xiàn)它;不需要 Literal 控件。只有在需要以編程方式呈現(xiàn)文本時才使用 Literal 控件。

三、如何:向 Web 窗體頁添加 Literal Web 服務(wù)器控件

在您要以編程方式設(shè)置文本而不添加額外的 HTML 標(biāo)記時,可以向 Web 窗體頁添加 Literal Web 服務(wù)器控件。在要向頁面動態(tài)添加文本而不添加任何不屬于該動態(tài)文本的元素時,Literal 控件是一種很有用的方式。例如,您可以使用 Literal 控件來顯示您從一個文件或者流中讀取的 HTML。

說明: 如果想顯示靜態(tài)文本,可以使用 HTML 呈現(xiàn)它;不需要 Literal 控件。只有在需要動態(tài)更改服務(wù)器代碼中的內(nèi)容時才使用 Literal 控件。

1、從工具箱的“標(biāo)準(zhǔn)”選項卡中,將 Literal 控件拖動到頁面上。

2、或者,在“屬性”窗口的“行為”類別下,將 Mode 屬性設(shè)置為 Transform、PassThrough 或者 Encode。Mode 屬性指定該控件如何處理向其添加的任何標(biāo)記。下面的示例顯示一個簡單網(wǎng)頁,該頁在運行時顯示標(biāo)題新聞。該頁的主體(包括 Literal 控件)類似于下面的代碼。

代碼如下:

<body>

  <form runat="server">

    <h1><asp:Literal id="Headline" runat=server mode="PassThrough"/></h1>

  </form>

</body>

3、將代碼添加到頁面上以在運行時設(shè)置控件的 Text 屬性。

下面的示例顯示如何以編程方式設(shè)置 Literal 控件的文本和編碼。該頁包含一組單選按鈕,允許用戶在編碼文本和傳遞文本之間選擇。

說明: 如果您正將 Text 屬性設(shè)置為來自不受信任源的文本,則要將控件的 Mode 屬性設(shè)置為 Encode,這樣標(biāo)記才不會形成可執(zhí)行標(biāo)記。

代碼如下:

<%@ Page Language="C#" %>

<script runat="server">

    protected void Page_Load(object sender, EventArgs e)

    {

        Literal1.Text = "This <b>text</b> is inserted dynamically.";

        if (radioEncode.Checked == true)

        {

            Literal1.Mode = LiteralMode.Encode;

        }

        if(radioPassthrough.Checked == true)

        {

            Literal1.Mode = LiteralMode.PassThrough;

        }

    }

</script>

<html>

<head runat="server"></head>

<body>

    <form id="form1" runat="server">

    <div>

        <br />

        <asp:RadioButton

            ID="radioEncode"

            runat="server"

            GroupName="LiteralMode"

            Checked="True"

            Text="Encode"

            AutoPostBack="True" />

        <br />

        <asp:RadioButton

            ID="radioPassthrough"

            runat="server"

            GroupName="LiteralMode"

            Text="PassThrough"

            AutoPostBack="True" />

        <br />

        <br />

        <asp:Literal ID="Literal1" runat="server"></asp:Literal> </div>

    </form>

</body>

</html>

四、Literal 類

在網(wǎng)頁上保留顯示靜態(tài)文本的位置。

使用 System.Web.UI.WebControls.Literal 控件在網(wǎng)頁上保留顯示文本的位置。Literal 控件與 Label 控件類似,但 Literal 控件不允許對所顯示的文本應(yīng)用樣式??梢酝ㄟ^設(shè)置 Text 屬性,以編程方式控制在控件中顯示的文本。

警告: 此控件可用來顯示用戶輸入,而該輸入可能包含惡意的客戶端腳本。在應(yīng)用程序中顯示從客戶端發(fā)送來的任何信息之前,請檢查它們是否包含可執(zhí)行腳本、SQL 語句或其他代碼。ASP.NET 提供輸入請求驗證功能以阻止用戶輸入中的腳本和 HTML。還提供驗證服務(wù)器控件以判斷用戶輸入。

下面的示例說明如何使用 Literal 控件顯示靜態(tài)文本。

說明: 下面的示例使用單文件代碼模型,如果將它直接復(fù)制到代碼隱藏文件中,則它可能無法正常工作。此代碼示例必須被復(fù)制到具有 .aspx 擴展名的空文本文件中。

代碼如下:

<%@ Page Language="C#" AutoEventWireup="True" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>

<head>

    <title>Literal Example</title>

<script runat="server">

      void ButtonClick(Object sender, EventArgs e)

      {

         Literal1.Text="Welcome to ASP.NET!!";

      }

   </script>

</head>

<body>

   <form id="form1" runat="server">

      <h3>Literal Example</h3>

      <asp:Literal id="Literal1"

           Text="Hello World!!"

           runat="server"/>

      <br /><br />

      <asp:Button id="Button1"

           Text="Change Literal Text"

           OnClick="ButtonClick"

           runat="server"/>

   </form>

</body>

</html>

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機網(wǎng)站地址:ASP.NET中Literal與Label控件的區(qū)別
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報警專用圖標(biāo)