Literal 與 LiteralControl 區別 && Literal 模式的三個值

 

 

名稱空間

  • Literal 的名稱空間是 System.Web.UI.WebControls;
  • LiteralControl 的名稱空間是 System.Web.UI。

應用範圍

  • Literal 跟 Button、TextBox、HyperLink 等控件一樣可以從工具欄中拖到頁面中,也可以在代碼頁中用代碼創建。
  • LiteralControl 只能是在代碼頁中創建,要讓其輸出到客戶端,必須將其作爲子控件添加到其他控件中,比如添加到 PlaceHolder 中。

應用方式

  • Literal 的構造函數不含任何參數,動態創建時必須使用如下方式:
    Literal l2 = new Literal();
    l2.Text = "<b>123</b>";
  • LiteralControl 的構造函數可以帶一個參數 text,以實現一步到位:
    LiteralControl lc2 = new LiteralControl("<b>456</b>");

HTML 支持

  • Literal 輸出時是否進行 HTML 轉換(比如將 <b> 轉換成 &lt;b&gt;)取決於其 Mode,請參見:Literal 模式的三個值
  • LiteralControl 輸出時總是原樣輸出。 
<asp:Literal ID="_l0" runat="server"><>&"'</asp:Literal>
<asp:Literal ID="_l2" runat="server" Mode="PassThrough"><>&"'</asp:Literal>
<asp:Literal ID="_l1" runat="server" Mode="Encode"><>&"'</asp:Literal>
<asp:Literal ID="_l3" runat="server" Mode="Transform"><>&"'</asp:Literal>

輸出後,查看源代碼,可以看到結果如下:

<>&"'
<>&"'
&lt;&gt;&amp;&quot;'
<>&"'

Literal.Mode 的值是 LiteralMode 枚舉值之一:

  • PassThrough 未修改控件的內容。
  • Encode 控件的內容轉換爲 HTML 編碼的字符串。
  • Transform 從控件的內容中移除不受支持的標記語言元素。如果 Literal 控件在支持 HTML 或 XHTML 的瀏覽器上呈現,則不會修改該控件的內容。此爲默認值。

所以說,在 Web 瀏覽器上,Transform 和 PassThrough 是一個意思。

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