Define los métodos para la administración de secuencias de comandos de cliente en aplicaciones Web.
Espacio de nombres: System.Web.UI
Ensamblado: System.Web (en system.web.dll)
Visual Basic (Declaración)
Public NotInheritable Class ClientScriptManager
Dim instance As ClientScriptManager
public sealed class ClientScriptManager
public ref class ClientScriptManager sealed
public final class ClientScriptManager
public final class ClientScriptManager
La clase ClientScriptManager se utiliza para administrar las secuencias de comandos de cliente y agregarlas a las aplicaciones Web. Puede obtener una referencia a la clase ClientScriptManager desde la propiedad ClientScript del objeto Page.
Mediante declaración puede agregar una secuencia de comandos de cliente a una página Web incluyendo la secuencia de comandos en el marcado HTML de la página. Sin embargo, hay situaciones en las que se necesita agregar dinámicamente la secuencia de comandos de cliente. Para agregar dinámicamente una secuencia de comandos, utilice los métodos RegisterClientScriptBlock, RegisterClientScriptInclude, RegisterStartupScript o RegisterOnSubmitStatement, dependiendo de cuándo y cómo desee agregar la secuencia de comandos. Para obtener más información, vea Cómo: Agregar secuencias de comandos de cliente a las páginas Web ASP.NET dinámicamente.
La clase ClientScriptManager identifica de forma única las secuencias de comandos por un objeto String clave y un objeto Type. Las secuencias de comandos de la misma clave y tipo se consideran duplicadas. La utilización del tipo de secuencia de comandos ayuda a evitar la confusión entre secuencias de comandos similares de controles de usuario diferentes que podrían utilizarse en la página.
Se puede utilizar la clase ClientScriptManager para invocar las devoluciones de llamada del cliente en aquellas situaciones en la que es deseable ejecutar código de servidor desde el cliente sin realizar una devolución de datos. Este procedimiento se denomina realizar una devolución de llamada fuera de banda al servidor. En una devolución de llamada de cliente, una función de secuencia de comandos de cliente envía una solicitud asincrónica a una página Web ASP.NET. La página Web ejecuta una versión modificada de su ciclo de vida normal para procesar la devolución de llamada. Utilice el método GetCallbackEventReference para obtener una referencia a una función de cliente que, cuando se invoca, inicia una devolución de llamada de cliente a los eventos del servidor. Para obtener más información, vea Implementar devoluciones de llamada de cliente sin devoluciones de datos en las páginas Web ASP.NET.
Nota: |
|---|
| Las devoluciones de llamada de secuencias de comandos no funcionan en los exploradores más antiguos que no admiten el Modelo de objetos de documento (DOM) y requieren que ECMAScript esté habilitado en el cliente. Para comprobar si el explorador admite las devoluciones de llamada, utilice la propiedad SupportsCallback que es accesible a través de la propiedad Browser del objeto Request intrínseco de ASP.NET. |
Utilice los métodos GetPostBackEventReference y GetPostBackClientHyperlink para definir un evento de devolución de datos de cliente. Cuando se invocan, estos métodos habilitan las funciones de secuencia de comandos de cliente para que el servidor devuelva los datos a la página. Un evento de devolución de datos de cliente es diferente de una devolución de llamada de cliente en que la página Web finaliza un ciclo de vida normal para procesar el evento de devolución de datos de cliente.
Nota: |
|---|
| Si está utilizando un control Button y la propiedad UseSubmitBehavior se establece en false, puede utilizar el método GetPostBackEventReference para devolver el evento de devolución de datos de cliente para el control Button. |
Se puede utilizar la propiedad OnClientClick del control Button, el control ImageButton y el control LinkButton para ejecutar la secuencia de comandos de cliente.
En el ejemplo de código siguiente se muestra cómo usar el método RegisterClientScriptBlock de la clase ClientScriptManager. En la página, se definen dos secuencias de comandos de cliente: PopupScript, que muestra un mensaje de alerta cuando la página está cargada y ButtonClickScript, que define un controlador del cliente para un evento onClick de un botón 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 >
<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="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 >
<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>
Seguridad de .NET Framework
System.Object
System.Web.UI.ClientScriptManager
Seguridad para subprocesos
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter
Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.
.NET Framework
Compatible con: 3.0, 2.0