ASP.NET中的asp:label和asp:literal

來源:互聯網
上載者:User

一、方案

Literal 最常用於向頁面中動態新增內容。

 

二、背景

Literal 控制項表示用於向頁面新增內容的幾個選項之一。對於靜態內容,無需使用容器,可以將標記作為 HTML 直接添加到頁面中。但是,如果要動態新增內容,則必須將內容添加到容器中。典型的容器有 Label 控制項、Literal 控制項、Panel 控制項和 PlaceHolder 控制項。

Literal 控制項與 Label 控制項的區別在於 Literal 控制項不向文本中添加任何 HTML 元素。(Label 控制項呈現一個 span 元素。)因此,Literal 控制項不支援包括位置屬性在內的任何樣式屬性。但是,Literal 控制項允許指定是否對內容進行編碼。

Panel 和 PlaceHolder 控制項呈現為 div 元素,這將在頁面中建立離散塊,與 Label 和 Literal 控制項進行內嵌呈現的方式不同。

通常情況下,當希望文本和控制項直接呈現在頁面中而不使用任何附加標記時,可使用 Literal 控制項。

 

在 Literal 控制項中編碼內容

Literal 控制項支援 Mode 屬性,該屬性用於指定控制項對您所添加的標記的處理方式。可以將 Mode 屬性設定為以下值:

·Transform. 將對添加到控制項中的任何標記進行轉換,以適應請求瀏覽器的協議。如果向使用 HTML 外的其他協議的行動裝置呈現內容,此設定非常有用。

·PassThrough. 添加到控制項中的任何標記都將按原樣呈現在瀏覽器中。

·Encode. 將使用 HtmlEncode 方法對添加到控制項中的任何標記進行編碼,這會將 HTML 編碼轉換為其文本表示形式。例如,<b> 標記將呈現為 &lt;b&gt;。當希望瀏覽器顯示而不解釋標記時,編碼將很有用。編碼對於安全也很有用,有助於防止在瀏覽器中執行惡意標記。顯示來自不受信任的源的字串時推薦使用此設定。

 

三、如何:向 Web Form頁添加 Literal Web 伺服器控制項

      在您要以編程方式設定文本而不添加額外的 HTML 標籤時,可以向 Web Form頁添加 Literal Web 伺服器控制項。在要向頁面動態添加文本而不添加任何不屬於該動態文本的元素時,Literal 控制項是一種很有用的方式。例如,您可以使用 Literal 控制項來顯示您從一個檔案或者流中讀取的 HTML。

      說明: 如果想顯示靜態文本,可以使用 HTML 呈現它;不需要 Literal 控制項。只有在需要動態更改伺服器代碼中的內容時才使用 Literal 控制項。

 

      1、從工具箱的“標準”選項卡中,將 Literal 控制項拖動到頁面上。

 

2、或者,在“屬性”視窗的“行為”類別下,將 Mode 屬性設定為 Transform、PassThrough 或者 Encode。Mode 屬性指定該控制項如何處理向其添加的任何標記。下面的樣本顯示一個簡單網頁,該頁在運行時顯示標題新聞。該頁的主體(包括 Literal 控制項)類似於下面的代碼。

<body>

  <form runat="server">

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

      mode="PassThrough"/></h1>

  </form>

</body>

 

      3、將代碼添加到頁面上以在運行時設定控制項的 Text 屬性。

下面的樣本顯示如何以編程方式設定 Literal 控制項的文本和編碼。該頁包含一組選項按鈕,允許使用者在編碼文本和傳遞文本之間選擇。

說明: 如果您正將 Text 屬性設定為來自不受信任源的文本,則要將控制項的 Mode 屬性設定為 Encode,這樣標記才不會形成可執行標記。

<%@ 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>

</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>&nbsp;</div>

    </form>

</body>

</html>

 

四、Literal 類

在網頁上保留顯示靜態文本的位置。

      使用 System.Web.UI.WebControls.Literal 控制項在網頁上保留顯示文本的位置。Literal 控制項與 Label 控制項類似,但 Literal 控制項不允許對所顯示的文本應用樣式。可以通過設定 Text 屬性,以編程方式控制在控制項中顯示的文本。

      警告: 此控制項可用來顯示使用者輸入,而該輸入可能包含惡意的用戶端指令碼。在應用程式中顯示從用戶端發送來的任何資訊之前,請檢查它們是否包含可執行指令碼、SQL 陳述式或其他代碼。ASP.NET 提供輸入請求驗證功能以阻止使用者輸入中的指令碼和 HTML。還提供驗證伺服器控制項以判斷使用者輸入。

 

樣本

下面的樣本說明如何使用 Literal 控制項顯示靜態文本。

      說明: 下面的樣本使用單檔案代碼模型,如果將它直接複製到程式碼後置檔案中,則它可能無法正常工作。此程式碼範例必須被複製到具有 .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>

來自:http://www.cnblogs.com/Fskjb/archive/2010/03/19/1690233.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.