名稱空間
- 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> 轉換成 <b>)取決於其 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>
<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>
輸出後,查看源代碼,可以看到結果如下:
<>&"'
<>&"'
<>&"'
<>&"'
<>&"'
<>&"'
<>&"'
Literal.Mode 的值是 LiteralMode 枚舉值之一:
- PassThrough 未修改控件的內容。
- Encode 控件的內容轉換爲 HTML 編碼的字符串。
- Transform 從控件的內容中移除不受支持的標記語言元素。如果 Literal 控件在支持 HTML 或 XHTML 的瀏覽器上呈現,則不會修改該控件的內容。此爲默認值。
所以說,在 Web 瀏覽器上,Transform 和 PassThrough 是一個意思。