方法 : Web フォーム ページに Literal Web サーバー コントロールを追加する (Visual Studio)
更新 : 2007 年 11 月
HTML タグを追加せずにテキストをプログラムで設定する場合は、Web フォーム ページに Literal Web サーバー コントロールを追加します。Literal コントロールは、動的テキストに含まれていない要素を追加せずに、ページにテキストを動的に追加する方法として役立ちます。たとえば、Literal コントロールを使用すると、ファイルまたはストリームから読み込まれた HTML を表示できます。
メモ : |
---|
静的テキストを表示するには、HTML を使用できます。Literal コントロールを使用する必要はありません。Literal コントロールを使用するのは、サーバー コードでテキストの内容を動的に変更する必要がある場合だけです。 |
Web フォーム ページに Literal Web サーバー コントロールを追加するには
ツールボックスの [標準] タブから、Literal コントロールをページにドラッグします。
オプションとして、[プロパティ] ウィンドウの [動作] カテゴリで、Mode プロパティを Transform、PassThrough、または Encode に設定します。Mode プロパティは、追加されたマークアップをコントロールで処理する方法を指定します。詳細については、「Literal Web サーバー コントロールの概要」を参照してください。
実行時に見出しを表示する単純な Web ページを次の例に示します。Literal コントロールを含むページの本文は次のようになります。
<body> <form runat="server"> <h1><asp:Literal id="Headline" runat=server mode="PassThrough"/></h1> </form> </body>
実行時にコントロールの Text プロパティを設定するコードをページに追加します。
Literal コントロールのテキストおよびエンコーディングをプログラムで設定する方法を次の例に示します。ページには、エンコードするテキストとパススルーするテキストをユーザーが選択できるオプション ボタンが含まれています。
メモ : 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> </div> </form> </body> </html>