如何:向 Web 窗体页添加 Literal Web 服务器控件 (Visual Studio)

更新:2007 年 11 月

在您要以编程方式设置文本而不添加额外的 HTML 标记时,可以向 Web 窗体页添加 Literal Web 服务器控件。在要向页面动态添加文本而不添加任何不属于该动态文本的元素时,Literal 控件是一种很有用的方式。例如,您可以使用 Literal 控件来显示您从一个文件或者流中读取的 HTML。

yxtwx09e.alert_note(zh-cn,VS.90).gif说明:

如果想显示静态文本,可以使用 HTML 呈现它;不需要 Literal 控件。只有在需要动态更改服务器代码中的内容时才使用 Literal 控件。

向 Web 窗体页添加 Literal Web 服务器控件

  1. 从工具箱的**“标准”**选项卡中,将 Literal 控件拖动到页面上。

  2. 或者,在**“属性”窗口的“行为”**类别下,将 Mode 属性设置为 TransformPassThrough 或者 EncodeMode 属性指定该控件如何处理向其添加的任何标记。有关详细信息,请参见 Literal Web 服务器控件概述

    下面的示例显示一个简单网页,该页在运行时显示标题新闻。该页的主体(包括 Literal 控件)类似于下面的代码。

    <body>
      <form runat="server">
        <h1><asp:Literal id="Headline" runat=server 
          mode="PassThrough"/></h1>
      </form>
    </body>
    
  3. 将代码添加到页面上以在运行时设置控件的 Text 属性。

    下面的示例显示如何以编程方式设置 Literal 控件的文本和编码。该页包含一组单选按钮,允许用户在编码文本和传递文本之间选择。

    yxtwx09e.alert_note(zh-cn,VS.90).gif说明:

    如果您正将 Text 属性设置为来自不受信任源的文本,则要将控件的 Mode 属性设置为 Encode,这样标记才不会形成可执行标记。

    <%@ Page Language="VB" %>
    <script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs)
        Literal1.Text = "This <b>text</b> is inserted dynamically."
        If radioEncode.Checked = True Then
            Literal1.Mode = LiteralMode.Encode
        ElseIf radioPassthrough.Checked = True Then
            Literal1.Mode = LiteralMode.PassThrough
        End If
    End Sub
    </script>
    
    <html>
    <head runat="server"></head>
    <body>
    <form id="form1" runat="server">
    <div>
        <br />
        <asp:RadioButton 
            ID="radioEncode" 
            runat="server"
            GroupName="LiteralMode" 
            Checked="True" 
            Text="Encode" 
            AutoPostBack="True" />
        <br />
        <asp:RadioButton 
            ID="radioPassthrough" 
            runat="server" 
            GroupName="LiteralMode" 
            Text="PassThrough" 
            AutoPostBack="True" />
        <br />
        <br />
        <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    </div>
    </form>
    </body>
    </html>
    
    <%@ Page Language="C#" %>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e)
        {
            Literal1.Text = "This <b>text</b> is inserted dynamically.";
            if (radioEncode.Checked == true)
            {
                Literal1.Mode = LiteralMode.Encode;
            }
            if(radioPassthrough.Checked == true)
            {
                Literal1.Mode = LiteralMode.PassThrough;
            }
        }
    </script>
    </script>
    
    <html>
    <head runat="server"></head>
    <body>
        <form id="form1" runat="server">
        <div>
            <br />
            <asp:RadioButton 
                ID="radioEncode" 
                runat="server"
                GroupName="LiteralMode" 
                Checked="True" 
                Text="Encode" 
                AutoPostBack="True" />
            <br />
            <asp:RadioButton 
                ID="radioPassthrough" 
                runat="server" 
                GroupName="LiteralMode" 
                Text="PassThrough" 
                AutoPostBack="True" />
            <br />
            <br />
            <asp:Literal ID="Literal1" runat="server"></asp:Literal>&nbsp;</div>
        </form>
    </body>
    </html>
    

请参见

参考

Literal Web 服务器控件概述