Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Sólo dos elementos de formulario HTML (el botón y el botón de imagen) originan devolución de formulario. Si el botón personalizado procesa un elemento HTML que no origina devolución (como un cuadro de texto o un botón de vínculo) y desea que el control inicie una devolución, se puede programar esta operación en ASP.NET mediante una arquitectura de eventos basada en secuencia de comandos del cliente (JScript, JavaScript).
Los programadores de controles deben realizar algunos retoques a los controles para habilitar este mecanismo de devolución. El siguiente fragmento de código (en negrita) muestra el código que debe agregarse al método Render de un control para iniciar una devolución.
protected override void Render(HtmlTextWriter output) {
output.Write("<a id=\"" + this.UniqueID + "\" HRef=\"javascript:" + Page.GetPostBackEventReference(this) +"\">");
output.Write(" " + this.UniqueID + "</a>");
}
[Visual Basic]
Protected Overrides Sub Render(output As HtmlTextWriter)
output.Write("<a id=""" & Me.UniqueID & _
""" HRef=""javascript:" & _ Page.GetPostBackEventReference(Me) & """>")
output.Write(" " & Me.UniqueID & "</a>")
End Sub
El método GetPostBackEventReference emite secuencia de comandos en el cliente, que inicia la devolución al tiempo que sirven de referencia al control que inició el evento de devolución.
Para conocer lo que hace el método GetPostBackEventReference, hay que compilar el código de la siguiente sección, Ejemplo de devolución mediante Script en el cliente, y solicitar la página .aspx acompañante en el explorador. Si ve el origen de la página procesada con el comando Ver código fuente del explorador, verá el texto HTML y la secuencia de comandos siguientes. (Los valores reales del nombre y los atributos de Id. del formulario variarán, así como el atributo de valor de la variable oculta.)
<html>
<body>
<form name="ctrl2" method="POST" action="MyLinkButton.aspx" id="ctrl2">
<input type="hidden" name="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" value="dDwtMjI1NTgwNDE2Ozs+eIZ+AfRvoCj1nWimbh+zPv/rKNg=" />
Here is the custom link button.<br>
<a id ="Link" HRef="javascript:__doPostBack('Link','')"> Link</a>
<br><br>
<input name="TextBox" type="text" value="Click the link" id="TextBox" style="background-color:Cyan;width:200px;" />
<br>
<script language="javascript"><!-- function __doPostBack(eventTarget, eventArgument) { var theform = document.ctrl2 theform.__EVENTTARGET.value = eventTarget theform.__EVENTARGUMENT.value = eventArgument theform.submit() }// --></script>
</form>
</body>
</html>
El marco de trabajo de páginas ASP.NET agrega los elementos que aparecen en negrita en este ejemplo (dos campos ocultos y la secuencia de comandos del cliente). Los campos de formulario ocultos indican a qué control de servidor se realizará la devolución y opcionalmente especifican un argumento para pasar. El método de secuencia de comandos del cliente se utiliza para definir los campos ocultos y hace que el formulario se envíe al servidor. Para obtener un ejemplo completo, vea Ejemplo de devolución mediante secuencia de comandos en el cliente.
Vea también
Ejemplo de devolución mediante secuencia de comandos en el cliente