方法 : Web フォーム ページに Literal Web サーバー コントロールを追加する (Visual Studio)

更新 : 2007 年 11 月

HTML タグを追加せずにテキストをプログラムで設定する場合は、Web フォーム ページに Literal Web サーバー コントロールを追加します。Literal コントロールは、動的テキストに含まれていない要素を追加せずに、ページにテキストを動的に追加する方法として役立ちます。たとえば、Literal コントロールを使用すると、ファイルまたはストリームから読み込まれた HTML を表示できます。

yxtwx09e.alert_note(ja-jp,VS.90).gifメモ :

静的テキストを表示するには、HTML を使用できます。Literal コントロールを使用する必要はありません。Literal コントロールを使用するのは、サーバー コードでテキストの内容を動的に変更する必要がある場合だけです。

Web フォーム ページに Literal Web サーバー コントロールを追加するには

  1. ツールボックスの [標準] タブから、Literal コントロールをページにドラッグします。

  2. オプションとして、[プロパティ] ウィンドウの [動作] カテゴリで、Mode プロパティを TransformPassThrough、または Encode に設定します。Mode プロパティは、追加されたマークアップをコントロールで処理する方法を指定します。詳細については、「Literal Web サーバー コントロールの概要」を参照してください。

    実行時に見出しを表示する単純な Web ページを次の例に示します。Literal コントロールを含むページの本文は次のようになります。

    <body>
      <form runat="server">
        <h1><asp:Literal id="Headline" runat=server 
          mode="PassThrough"/></h1>
      </form>
    </body>
    
  3. 実行時にコントロールの Text プロパティを設定するコードをページに追加します。

    Literal コントロールのテキストおよびエンコーディングをプログラムで設定する方法を次の例に示します。ページには、エンコードするテキストとパススルーするテキストをユーザーが選択できるオプション ボタンが含まれています。

    yxtwx09e.alert_note(ja-jp,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 サーバー コントロールの概要