次の方法で共有


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>ラップされているかどうかを示すことができます。 trueスクリプト タグが自動的に追加されることを示す設定addScriptTags

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

こちらもご覧ください

適用対象