ClientScriptManager 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在 Web 应用程序中定义用于管理客户端脚本的方法。
public ref class ClientScriptManager sealed
public sealed class ClientScriptManager
type ClientScriptManager = class
Public NotInheritable Class ClientScriptManager
- 继承
-
ClientScriptManager
示例
下面的代码示例演示如何使用 RegisterClientScriptBlock 类的 ClientScriptManager 方法。 页面中定义了两个客户端脚本: PopupScript
(在加载页面时显示警报消息)和 ButtonClickScript
(定义 HTML 按钮 onClick
事件的客户端处理程序)。
<%@ 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>
注解
类 ClientScriptManager 用于管理客户端脚本并将其添加到 Web 应用程序。 可以从 对象的 属性获取对 ClientScriptManager 类 ClientScript 的 Page 引用。
可以通过将脚本包含在页面的 HTML 标记中,以声明方式将客户端脚本添加到网页。 但是,在某些情况下需要动态添加客户端脚本。 若要动态添加脚本,请使用 RegisterClientScriptBlock 方法、 RegisterClientScriptInclude 方法、 RegisterStartupScript 方法或 RegisterOnSubmitStatement 方法,具体取决于要添加脚本的时间和方式。 有关详细信息,请参阅 如何:动态添加客户端脚本以 ASP.NET 网页。
类 ClientScriptManager 通过键 String 和 来唯一 Type标识脚本。 具有相同键和类型的脚本被视为重复项。 使用脚本类型有助于避免混淆页面上可能正在使用的不同用户控件中的类似脚本。
类 ClientScriptManager 可用于在需要从客户端运行服务器代码而不执行回发的情况下调用客户端回调。 这称为对服务器执行带外回调。 在客户端回调中,客户端脚本函数将异步请求发送到 ASP.NET 网页。 网页运行其正常生命周期的修改版本来处理回调。 GetCallbackEventReference使用 方法获取对客户端函数的引用,该函数在调用时会启动对服务器事件的客户端回调。 有关详细信息,请参阅 实现不带回发的客户端回调。
注意
脚本回调在不支持文档对象模型 (DOM) 的旧浏览器中不起作用,并且需要在客户端上启用 ECMAScript。 若要检查浏览器是否支持回调,请使用 SupportsCallback 属性,该属性可通过 Browser ASP.NET 内部 Request 对象的 属性进行访问。
GetPostBackEventReference使用 方法和 GetPostBackClientHyperlink 方法定义客户端回发事件。 这些方法使客户端脚本函数在调用时能够使服务器发回到页面。 客户端回发事件与客户端回调不同,网页完成正常的生命周期来处理客户端回发事件。
注意
如果使用控件 Button ,并且 属性 UseSubmitBehavior 设置为 false
,则可以使用 GetPostBackEventReference 方法返回控件的客户端回发事件 Button 。
控件OnClientClick、ImageButton控件和LinkButton控件的 Button 属性可用于运行客户端脚本。