ScriptService, по моему мнению, является скрытой жемчужиной в asp.net. Вызовы в службу сценариев не передают данные формы + viewstate, они представляют собой скудную и быструю полезную нагрузку JSON.
Здесь самое интересное, менеджер сценариев ASP.NET3.5 может выполнить за вас большую часть работы по созданию метода JS для вызова и настройке любых необходимых классов JS.
Простой пример извлечения подробностей для «Человека», предполагая, что Person - это класс C #.
В 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 */
}
}
}
In DetailsPage.aspx
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Services/PersonService.asmx" />
</Services>
</asp:ScriptManager>
Используя такую настройку, вам даже не понадобится помощь JQuery для вызова службы и возврата JS-версии вашего класса C # Person, .net сделает все за вас.
Пример использования этого сервиса от JS:
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;
}
В любом случае, было бы более чем полезно изучить материал ASP.NET Ajax ScriptService. Даже если вы решите не использовать его на этот раз, это довольно злая функция.
Ссылки