Søg på DotNyt:
Denne blog er flyttet til www.nielsbrinch.com


mandag den 2. juli 2007

Webservice kald fra ASP.NET Ajax

skrevet af Christian H. Nielsen

Jeg læste fornylig et indlæg på Scott Guthries blog omkring en såkaldt ViewManager til Ajax. Ideen er at man kan lave webservice kald direkte fra javascript, hvor det html der skal returneres genereres via en UserControl.

For at kalde en webservice starter man ved at sætte en ScriptManager op med en ServiceReference til den webservice man vil tilgå. Samtidig kan man evt angive en ScriptReference hvis man ikke ønsker at have sin scriptkode liggende inline.

<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="CustomerScript.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="CustomerWebService.asmx" />
</Services>
</asp:ScriptManager>
Derefter kan man så tilgå webservicen således.
function doCallbacks()
{
AJAXtest.CustomerWebService.
GetCustomersByCity("Odense", displayCustomers);
}

function displayCustomers(result)
{
$get("viewresult").innerHTML = result;
}

Uden viewmanageren vil dette kræve at man bygger det html der returneres manuelt, hvilket de fleste gør ved at lave en gang uskøn strenggymnastik. Men med ViewManageren kan man definere sit view som en helt almindelig UserControl og generere html sådan her.

[WebMethod]
public string GetCustomersByCity(string city)
{
List<Customer> customers = GetCustomersFrom(city);

return ViewManager.
RenderView("~/App_Views/Customers.ascx", customers);
}

Det gør med andre ord Ajax kald til webservices langt mere anvendelige.


For ikke at skulle gentage koden fra ViewManageren er her istedet et link til det eksempel Scott Gu har skrevet. ViewManager sample

0 kommentarer

0 Kommentarer:

Send en kommentar

<< Tilbage


 
Til forsiden

Niels Brinch