2009-08-18 24 views
5

Actualmente estamos realizando una devolución de datos entre páginas utilizando el PostBackUrl de un asp:Button:PostBackUrl no está disponible en HTML Botones

<asp:Button runat="server" PostBackUrl="processing.aspx" /> 

que genera este JavaScript onclick cosas:

<input type="submit" name="ctl03" 
    onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl03', ', false, ', 'processing.aspx', false, false))" /> 

Quisiéramos para cambiarlo y usar una simple ol '<button runat="server"> (easier to style), sin embargo, PostBackUrl no es compatible con ellos.

Así que pensé: ¿y si simplemente utilizas dicho JavaScript en mi elemento <button>?

<button runat="server" name="ctl03" 
    onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions('ctl03', '', false, '', 'processing.aspx', false, true))"> 
</button> 

Y ahora, funciona.

¿Alguien ha visto esto antes? ¿Qué daño sufrirá yo o mis hijos si procedo con esto?

+0

Solo por aclaración: ¿por qué está poniendo la devolución de datos de página cruzada en el control en lugar del formulario? ¿Tiene algunos controles que se publican en la página original? –

+0

@Mark: sí, algunos botones devueltos a la misma página, uno no debería. –

Respuesta

5

Interesante pregunta, sólo se veía el método de ClientScript GetPostBackEventReference y aquí lo que me pasa:

botón en la página ASP.NET:

<button id="Button2" runat="server" name="Button2"></button> 

En código subyacente:

PostBackOptions postBackOptions = new PostBackOptions(Button2); 
postBackOptions.ActionUrl = "processing.aspx"; 
Button2.Attributes.Add("onclick", 
    ClientScript.GetPostBackEventReference(postBackOptions)); 

Resultado rendido:

<button id="Button2" name="Button2" 
    onclick="WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;Button2&quot;, &quot;&quot;, false, &quot;&quot;, &quot;processing.aspx&quot;, false, true))"> 
</button> 
+2

Esa es probablemente la mejor manera de hacerlo. –

+0

Hermoso, gracias. Nunca he usado 'ClientScript.GetPostBackEventReference' ni me di cuenta de que tomaba opciones. –

0

"Probablemente no", pero depende de los detalles de implementación del ASP.NET JavaScript que pueden cambiar con el tiempo.

Seré honesto, en realidad no me di cuenta de que había un elemento HTML '<>'.

Cuestiones relacionadas