Autor: Dflying Chen ( http://dflying.cnblogs.com/ )
Todos los artículos de la serie anterior llaman directamente a un único servicio web. Sin embargo, en el desarrollo de proyectos reales, especialmente en la conversión de proyectos existentes, extraer la lógica de la página en un servicio web especializado a menudo conlleva bastante trabajo. Atlas tiene esto en cuenta y le permite agregar el atributo [WebMethod] al método público del lado del servidor para permitir llamadas directas desde JavaScript del lado del cliente.
Para permitir que los clientes llamen directamente a métodos definidos en páginas ASPX, debe especificar el método como público y agregar el atributo [WebMethod], como el siguiente método del lado del servidor definido en el archivo ASPX:
<script runat="server">
[Método web]
público int AddInt (int int1, int int2)
{
devolver int1 + int2;
}
</script>
En el lado del cliente, Atlas combinará un método AddInt JavaScript para usted, que existe en un espacio de nombres especial PageMethods, para que pueda llamar al método anterior a través de PageMethods.AddInt().
Al mismo tiempo, al definir WebMethod en la página ASPX, también puede acceder a los valores y ViewState de los controles del lado del servidor en todas las páginas de este método, y el ciclo de vida de toda la página será el mismo que la página ASP.NET tradicional PostBack, como Page_Load Se llamarán todos los demás métodos, lo que nos permitirá tener un acceso más seguro a la página. Sin embargo, esto también trae un descuento en el rendimiento, porque cada vez que se llama al método web, los valores de ViewState y de control en la página se devolverán al servidor y el procesamiento del lado del servidor de todo el ciclo de vida de la página. será más largo que simplemente procesar un El método web definido en ASMX es mucho más complicado. Por lo tanto, recomiendo utilizar el servicio web puro tanto como sea posible. Consulte: Se recomienda utilizar el servicio web en lugar del método de página en la implementación del lado del servidor Atlas.
Veamos un ejemplo. Primero, definamos el WebMethod en ASPX. Puede ver que no solo encuentra la suma de dos números, sino que también accede al valor del TextBox del lado del servidor en una página:
<script runat="server. ">
[Método web]
cadena pública AddInt (int int1, int int2)
{
return (int1 + int2).ToString() + string.Format("rnY el texto del cuadro de texto del servidor es '{0}'.", tbServer.Text);
}
</script>
Luego está el ScriptManager de la página. No es necesario agregar ninguna referencia aquí: <atlas:ScriptManager ID="scriptManager" runat="server" />.
Luego hay dos entradas utilizadas para ingresar el sumando y una entrada utilizada para activar la llamada al servidor:
<input id="value1" type="text" value="1" />
<entrada id="valor2" tipo="texto" valor="2" />
<input id="btnAdd" tipo="botón" valor="Agregar!" onclick="return btnAdd_onclick()" />
También hay un TextBox del lado del servidor:
<asp:TextBox ID="tbServer" runat="server" Text="Server control"></asp:TextBox>
La última es la llamada de JavaScript. Preste atención al espacio de nombres integrado de PageMethods:
function btnAdd_onclick() {.
Métodos de página.AddInt(
$('valor1').valor,
$('valor2').valor,
Completado
);
}
funciónOnComplete(resultado)
{
alerta(resultado);
}
Ejecútelo en el navegador, ingrese dos sumandos, luego ingrese algunos caracteres en el cuadro de texto en el lado del servidor, haga clic en Agregar, puede ver que se ha accedido al valor del cuadro de texto en el lado del servidor:
Esta es la transmisión de red interceptada por Fiddler. Puede ver que tanto ViewState como TextBox se devuelven al servidor:
El código fuente de este programa de ejemplo se puede descargar aquí: