ClientScriptManager.RegisterClientScriptBlock メソッド

定義

クライアント スクリプトを Page オブジェクトに登録します。

オーバーロード

名前 説明
RegisterClientScriptBlock(Type, String, String)

型、キー、スクリプト リテラルを使用して、 Page オブジェクトにクライアント スクリプトを登録します。

RegisterClientScriptBlock(Type, String, String, Boolean)

スクリプト タグを追加するかどうかを示す型、キー、スクリプト リテラル、およびブール値を使用して、クライアント スクリプトを Page オブジェクトに登録します。

RegisterClientScriptBlock(Type, String, String)

型、キー、スクリプト リテラルを使用して、 Page オブジェクトにクライアント スクリプトを登録します。

public:
 void RegisterClientScriptBlock(Type ^ type, System::String ^ key, System::String ^ script);
public void RegisterClientScriptBlock(Type type, string key, string script);
member this.RegisterClientScriptBlock : Type * string * string -> unit
Public Sub RegisterClientScriptBlock (type As Type, key As String, script As String)

パラメーター

type
Type

登録するクライアント スクリプトの種類。

key
String

登録するクライアント スクリプトのキー。

script
String

登録するクライアント スクリプト リテラル。

次のコード例は、 RegisterClientScriptBlock メソッドの使用方法を示しています。

<%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  public void Page_Load(Object sender, EventArgs e)
  {
    // Define the name and type of the client script on the page.
    String csName = "ButtonClickScript";
    Type csType = this.GetType();

    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the client script is already registered.
    if (!cs.IsClientScriptBlockRegistered(csType, csName))
    {
      StringBuilder csText = new StringBuilder();
      csText.Append("<script type=\"text/javascript\"> function DoClick() {");
      csText.Append("Form1.Message.value='Text from client script.'; }");
      csText.Append("</script>");
      cs.RegisterClientScriptBlock(csType, csName, csText.ToString());
    }
  }
</script>
<html  >
  <head>
    <title>RegisterClientScriptBlock Example</title>
  </head>
  <body>
     <form id="Form1"
         runat="server">
        <input type="text" id="Message" /> <input type="button" value="ClickMe" onclick="DoClick()" />
     </form>
  </body>
</html>
<%@ Page Language="VB"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
    Public Sub Page_Load(ByVal sender As [Object], ByVal e As EventArgs)
        ' Define the name and type of the client script on the page. 
        Dim csName As [String] = "ButtonClickScript"
        Dim csType As Type = Me.[GetType]()
        
        ' Get a ClientScriptManager reference from the Page class. 
        Dim cs As ClientScriptManager = Page.ClientScript
        
        ' Check to see if the client script is already registered. 
        If Not cs.IsClientScriptBlockRegistered(csType, csName) Then
            Dim csText As New StringBuilder()
            csText.Append("<script type=""text/javascript""> function DoClick() {")
            csText.Append("Form1.Message.value='Text from client script.'; }")
            csText.Append("</script>")
            cs.RegisterClientScriptBlock(csType, csName, csText.ToString())
        End If
    End Sub
</script>
<html  >
  <head>
    <title>RegisterClientScriptBlock Example</title>
  </head>
  <body>
     <form id="Form1"
         runat="server">
        <input type="text" id="Message" /> <input type="button" value="ClickMe" onclick="DoClick()" />
     </form>
  </body>
</html>

注釈

クライアント スクリプトは、キーとその種類によって一意に識別されます。 同じキーと種類のスクリプトは重複と見なされます。 特定の型とキーのペアを持つスクリプトを 1 つだけページに登録できます。 既に登録されているスクリプトを登録しようとしても、スクリプトの複製は作成されません。

IsClientScriptBlockRegistered メソッドを呼び出して、特定のキーと型のペアを持つクライアント スクリプトが既に登録されているかどうかを確認し、スクリプトの追加を不必要に試みないようにします。

RegisterClientScriptBlock メソッドのこのオーバーロードでは、script パラメーターで指定されたスクリプトが<script>要素ブロックにラップされていることを確認する必要があります。

RegisterClientScriptBlock メソッドは、レンダリングされたページの上部にスクリプト ブロックを追加します。 スクリプト ブロックは、登録された順序で出力されるとは限りません。 スクリプト ブロックの順序が重要な場合は、 StringBuilder オブジェクトを使用してスクリプトを 1 つの文字列にまとめ、それらすべてを 1 つのクライアント スクリプト ブロックに登録します。

こちらもご覧ください

適用対象

RegisterClientScriptBlock(Type, String, String, Boolean)

スクリプト タグを追加するかどうかを示す型、キー、スクリプト リテラル、およびブール値を使用して、クライアント スクリプトを Page オブジェクトに登録します。

public:
 void RegisterClientScriptBlock(Type ^ type, System::String ^ key, System::String ^ script, bool addScriptTags);
public void RegisterClientScriptBlock(Type type, string key, string script, bool addScriptTags);
member this.RegisterClientScriptBlock : Type * string * string * bool -> unit
Public Sub RegisterClientScriptBlock (type As Type, key As String, script As String, addScriptTags As Boolean)

パラメーター

type
Type

登録するクライアント スクリプトの種類。

key
String

登録するクライアント スクリプトのキー。

script
String

登録するクライアント スクリプト リテラル。

addScriptTags
Boolean

スクリプト タグを追加するかどうかを示すブール値。

例外

クライアント スクリプト ブロックの種類が null

次のコード例は、 RegisterClientScriptBlock メソッドの使用方法を示しています。 addScriptTags パラメーターはtrueに設定されているため、開始と終了のスクリプト タグは script パラメーターに含まれません。

<%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  public void Page_Load(Object sender, EventArgs e)
  {
    // Define the name and type of the client scripts on the page.
    String csname1 = "PopupScript";
    String csname2 = "ButtonClickScript";
    Type cstype = this.GetType();
        
    // Get a ClientScriptManager reference from the Page class.
    ClientScriptManager cs = Page.ClientScript;

    // Check to see if the startup script is already registered.
    if (!cs.IsStartupScriptRegistered(cstype, csname1))
    {
      String cstext1 = "alert('Hello World');";
      cs.RegisterStartupScript(cstype, csname1, cstext1, true);
    }

    // Check to see if the client script is already registered.
    if (!cs.IsClientScriptBlockRegistered(cstype, csname2))
    {
      StringBuilder cstext2 = new StringBuilder();
      cstext2.Append("<script type=\"text/javascript\"> function DoClick() {");
      cstext2.Append("Form1.Message.value='Text from client script.'} </");
      cstext2.Append("script>");
      cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), false);
    }
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ClientScriptManager Example</title>
  </head>
  <body>
     <form id="Form1"
         runat="server">
        <input type="text" id="Message" /> <input type="button" value="ClickMe" onclick="DoClick()" />
     </form>
  </body>
</html>
<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

    ' Define the name and type of the client scripts on the page.
    Dim csname1 As String = "PopupScript"
    Dim csname2 As String = "ButtonClickScript"
    Dim cstype As Type = Me.GetType()
    
    ' Get a ClientScriptManager reference from the Page class.
    Dim cs As ClientScriptManager = Page.ClientScript

    ' Check to see if the startup script is already registered.
    If (Not cs.IsStartupScriptRegistered(cstype, csname1)) Then
      
      Dim cstext1 As String = "alert('Hello World');"
      cs.RegisterStartupScript(cstype, csname1, cstext1, True)
      
    End If
    
    ' Check to see if the client script is already registered.
    If (Not cs.IsClientScriptBlockRegistered(cstype, csname2)) Then
      
      Dim cstext2 As New StringBuilder()
            cstext2.Append("<script type=""text/javascript""> function DoClick() {")
      cstext2.Append("Form1.Message.value='Text from client script.'} </")
      cstext2.Append("script>")
      cs.RegisterClientScriptBlock(cstype, csname2, cstext2.ToString(), False)
      
    End If
    
  End Sub
  
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ClientScriptManager Example</title>
  </head>
  <body>
     <form id="Form1"
         runat="server">
        <input type="text" id="Message" /> <input type="button" value="ClickMe" onclick="DoClick()" />
     </form>
  </body>
</html>

注釈

クライアント スクリプトは、キーとその種類によって一意に識別されます。 同じキーと種類のスクリプトは重複と見なされます。 特定の型とキーのペアを持つスクリプトを 1 つだけページに登録できます。 既に登録されているスクリプトを登録しようとしても、スクリプトの複製は作成されません。

IsClientScriptBlockRegistered メソッドを呼び出して、特定のキーと型のペアを持つクライアント スクリプトが既に登録されているかどうかを確認します。 これにより、スクリプトを不必要に追加しようとするのを回避できます。

RegisterClientScriptBlock メソッドのこのオーバーロードでは、script パラメーターで指定されたスクリプトが、addScriptTags パラメーターを使用して<script>要素ブロックでラップされているかどうかを示すことができます。 addScriptTagstrue に設定すると、スクリプト タグが自動的に追加されます。

RegisterClientScriptBlock メソッドは、レンダリングされたページの上部にスクリプト ブロックを追加します。 スクリプト ブロックは、登録された順序で出力されるとは限りません。 スクリプト ブロックの順序が重要な場合は、 StringBuilder オブジェクトを使用してスクリプトを 1 つの文字列にまとめ、それらすべてを 1 つのクライアント スクリプト ブロックに登録します。

こちらもご覧ください

適用対象