2011-03-27 41 views
17

Está bien utilizar __doPostBack() o no se recomienda porque se genera desde ASP.Net y no estamos seguros si lo cambiaron en una próxima versión de ASP.Net.¿Está bien usar __doPostBack()?

Respuesta

17

Me gustaría desaprobarlo, ya que es material interno de ASP.NET y nunca fue pensado para ser utilizado directamente.

En su lugar, lo que hago cuando necesito "manualmente" PostBack gatillo es la adición de botón oculto "del lado del servidor" con el buen OnClick:

<asp:Button id="btnDummy" runat="server" OnClick="Foo" style="display: none;" /> 

A continuación, el JS es:

document.getElementById("<%=btnDummy.ClientID%>").click(); 

De esta manera no me importa cómo pasa la publicación, simplemente desencadenar el flujo natural de eventos.

1

Probablemente no lo cambien, pero ¿por qué llamarlo directamente?
Creo que es una mejor estrategia para activar el evento (un clic de botón, por ejemplo) y dejar que el control active la devolución de datos.

Necesito activar la devolución de datos directamente, se recomienda usar las funciones de Page.ClientScript descritas a continuación.

1

Creo que está perfectamente bien para usar directamente, y lo he usado sin falta, es solo una función de JavaScript después de todo.

+0

Sí, es "solo una función de JavaScript", pero el problema es que no hay * garantía * de que estará presente en una próxima versión. –

0

Lo usamos por todas partes y no puedo imaginar que alguna vez se elimine de ASP.NET. Creo que el método del botón falso/oculto es igual de hokie si no peor. Si usa el enfoque del botón falso, entonces no tiene opción de pasar el __EVENTARGUMENT. Me gusta usar __EVENTARGUMENT para pasar mis datos al servidor mejor que crear campos ocultos, porque sería más difícil para un hacker poner en peligro que simplemente publicar algún campo oculto en mi página. Tampoco me gusta la idea de crear campos y controles en la página si ni siquiera se van a mostrar. Estoy seguro de que el enfoque del botón falso probablemente sea más fácil de entender para un codificador novato. Dicho esto, estoy buscando una forma más elegante de acercarme a esto, pero todavía me encuentro llamando al

__doPostBack('%=UpdatePanel.ClientID%>','MyData') 

en algunos casos.

Cuestiones relacionadas