Le ScriptService trucs à mon avis, est un joyau caché dans asp.net. Les appels vers le service de script ne sont pas passback des données de formulaire + viewstate, ils sont maigres, rapide JSON charges.
Heres la meilleure partie, ASP.NET3.5 scriptmanager pouvez faire la plupart du travail pour vous au sujet de la génération d'une méthode JS pour vous appeler et également la mise en place de toute JS classes nécessaires.
Un exemple simple pour récupérer les détails d'une "Personne", en supposant que la Personne est une classe C#.
Dans PersonService.asmx:
namespace MyProj.Services {
[System.Web.Script.Services.ScriptService]
[System.Web.Script.Services.GenerateScriptType(typeof(Person))]
public class PersonService : System.Web.Services.WebService
{
[WebMethod, ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public Person GetPersonDetails(int id)
{
/* return Logic here */
}
}
}
Dans DetailsPage.aspx
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Services/PersonService.asmx" />
</Services>
</asp:ScriptManager>
En utilisant une telle configuration, vous n'aurez même pas besoin de l'aide de JQuery pour appeler le service et obtenir un JS de votre version de C# la classe Personne, .net n'est que pour vous.
Un exemple d'utilisation de ce service à partir de JS serait:
MyProj.Services.PersonService.GetPersonDetails(id, _onDetailsCallbackSuccess, _requestFailed, null);
_onDetailsCallbackSuccess: function(result, userContext, methodName) {
//all persons properties are now intact and available
document.getElementById('txtFirstname').value = result.Firtname;
}
De toute façon, il serait plus intéressant de regarder dans le ASP.NET Ajax ScriptService choses. Même si vous décidez de ne pas l'utiliser cette fois, c'est un assez méchant fonctionnalité.
Liens