ClientScriptManager.RegisterStartupScript 方法

定义

Page 对象注册启动脚本。

重载

RegisterStartupScript(Type, String, String)

使用类型、键和脚本文本向 Page 对象注册启动脚本。

RegisterStartupScript(Type, String, String, Boolean)

使用类型、键、脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本。

RegisterStartupScript(Type, String, String)

使用类型、键和脚本文本向 Page 对象注册启动脚本。

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

参数

type
Type

要注册的启动脚本的类型。

key
String

要注册的启动脚本的键。

script
String

要注册的启动脚本文本。

示例

下面的代码示例演示了该方法 RegisterStartupScript 的使用。 请注意,开始和结束脚本标记包含在参数中 script 。 若要根据其他参数设置添加脚本标记,请参阅 RegisterStartupScript 该方法。

<%@ 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";
    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))
    {
        StringBuilder cstext1 = new StringBuilder();
        cstext1.Append("<script type=text/javascript> alert('Hello World!') </");
        cstext1.Append("script>");

        cs.RegisterStartupScript(cstype, csname1, cstext1.ToString());
    }
  }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>RegisterStartupScript</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </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 scripts on the page. 
        Dim csname1 As [String] = "PopupScript"
        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 New StringBuilder()
            cstext1.Append("<script type=text/javascript> alert('Hello World!') </")
            cstext1.Append("script>")
        
            cs.RegisterStartupScript(cstype, csname1, cstext1.ToString())
        End If
    End Sub

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title>RegisterStartupScript</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>

注解

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

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

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

方法添加 RegisterStartupScript 的脚本块在页面完成加载时执行,但在引发页面 OnLoad 事件之前执行。 无法保证脚本块按注册顺序输出。 如果脚本块的顺序很重要,请使用对象 StringBuilder 将脚本聚集在一个字符串中,然后在单个客户端脚本块中注册这些脚本。

另请参阅

适用于

RegisterStartupScript(Type, String, String, Boolean)

使用类型、键、脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本。

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

参数

type
Type

要注册的启动脚本的类型。

key
String

要注册的启动脚本的键。

script
String

要注册的启动脚本文本。

addScriptTags
Boolean

指示是否添加脚本标记的布尔值。

例外

typenull

示例

下面的代码示例演示了该方法的使用 RegisterStartupScript 。 请注意,参数设置为false``addScriptTags,因此参数中包含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>

注解

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

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

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

方法添加 RegisterStartupScript 的脚本块在页面完成加载时执行,但在引发页面 OnLoad 事件之前执行。 无法保证脚本块按注册顺序输出。 如果脚本块的顺序很重要,请使用对象 StringBuilder 将脚本收集到单个字符串中,然后在单个客户端脚本块中全部注册这些脚本。

另请参阅

适用于