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>

注解

客户端脚本由其密钥及其类型唯一标识。 具有相同键和类型的脚本被视为重复项。 只有一个具有给定类型和密钥配对的脚本才能注册到页面。 尝试注册已注册的脚本不会创建脚本的副本。

IsClientScriptBlockRegistered调用该方法以确定是否已注册具有给定密钥和类型配对的客户端脚本,并避免不必要地尝试添加脚本。

在此方法重 RegisterClientScriptBlock 载中,必须确保参数中 script 提供的脚本包装在元素块中 <script>

该方法 RegisterClientScriptBlock 将脚本块添加到呈现的页面顶部。 无法保证脚本块按注册顺序输出。 如果脚本块的顺序很重要,请使用对象 StringBuilder 将脚本聚集在一个字符串中,然后在单个客户端脚本块中注册这些脚本。

另请参阅

适用于

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 的使用。 Note that the addScriptTags parameter is set to true so the beginning and closing script tags are not included with the script parameter.

<%@ 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>

注解

客户端脚本由其密钥及其类型唯一标识。 具有相同键和类型的脚本被视为重复项。 只有一个具有给定类型和密钥配对的脚本才能注册到页面。 尝试注册已注册的脚本不会创建脚本的副本。

调用该方法IsClientScriptBlockRegistered以确定是否已注册具有给定密钥和类型配对的客户端脚本。 这样就可以避免不必要的尝试添加脚本。

在此方法重 RegisterClientScriptBlock 载中,可以使用参数指示参数中 script 提供的脚本是否使用 <script> 元素块 addScriptTags 包装。 设置为addScriptTags``true指示将自动添加脚本标记。

该方法 RegisterClientScriptBlock 将脚本块添加到呈现的页面顶部。 无法保证脚本块按注册顺序输出。 如果脚本块的顺序很重要,请使用对象 StringBuilder 将脚本聚集在一个字符串中,然后在单个客户端脚本块中注册这些脚本。

另请参阅

适用于