asp.net中Literal與label的區別

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


一、方案

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 窗體頁添加 Literal Web 服務器控件

      在您要以編程方式設置文本而不添加額外的 HTML 標記時,可以向 Web 窗體頁添加 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,這樣標記纔不會形成可執行標記


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章