名称空间
- 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 是一个意思。