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 是一个意思。

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