Ya hemos tratado este interesante tema de Page Methods, pero no habíamos demostrado cómo retornar un string, ahora vamos a hacerlo.
Para el caso, vamos a enviar a través del Page Method un valor numérico, y como valor de retorno traeremos una lista desordenada de elementos, la cual será enviada como un string al lado del cliente.
Empecemos. Recuerden que el proyecto debe tener:
1.- la referencia a System.Web.Extensions
2.- un ScriptManager con la propiedad EnablePageMethods=”true”
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server"> <title>Page Methods que retornan un string</title> <script type="text/javascript"> function BulletedList(quantity) { PageMethods.GetBulletedList(quantity, MyMethod_Result, onSucceed, onError); } function MyMethod_Result(StringDeRespuesta) { var Label1 = document.getElementById("<%= Label1.ClientID %>"); Label1.innerHTML = StringDeRespuesta; } function onSucceed(result) { } function onError(result) { alert(result.get_message()); } </script> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server"> </asp:ScriptManager> <asp:HyperLink ID="HyperLink1" NavigateUrl="javascript:;" onclick="BulletedList(10);" runat="server"> Obtener contenido HTML desde el servidor </asp:HyperLink> <p> <asp:Label ID="Label1" runat="server"></asp:Label> </p> </form> </body> </html>Luego, del lado del código VB.NET:
<System.Web.Services.WebMethod()> _ Public Shared Function GetBulletedList(ByVal quantity As Integer) As String Dim p As New Page Dim oStringWriter As New System.IO.StringWriter() Dim oHtmlTextWriter As New System.Web.UI.HtmlTextWriter(oStringWriter) Dim ul As New BulletedList For i As Integer = 1 To quantity ul.Items.Add("Este es el elemento #: " & i) Next ul.RenderControl(oHtmlTextWriter) Return oStringWriter.ToString() End FunctionComo pueden ver… hay un Page Method que crea una lista desordenada, a la cual se le van añadiendo elementos dinámicamente… y finalmente devuelve la lista pero convertida en un string.
Lo que hace posible que el contenido sea devuelto es el 2do parámetro que recibe el PageMethod en la llamada javascript:
PageMethods.GetBulletedList(quantity, MyMethod_Result, onSucceed, onError);
Eso es todo, espero que les sea de utilidad
No hay comentarios.:
Publicar un comentario