Ответ 1
Сценарий ScriptService, на мой взгляд, является скрытым камнем в asp.net. Вызовы службы script не содержат данные обратной формы + viewstate, они являются скудными, быстрыми полезными нагрузками JSON.
Лучше всего, ASP.NET3.5 scriptmanager может сделать большую часть работы для вас в отношении создания JS-метода для вызова, а также для настройки любых классов JS.
Простой пример для получения сведений для "Person", предполагая, что Person является классом С#.
В 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 */
}
}
}
В DetailsPage.aspx
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Services/PersonService.asmx" />
</Services>
</asp:ScriptManager>
Используя такую настройку, вам даже не понадобится помощь JQuery для вызова службы и возврата JS-версии вашего класса С# 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. Даже если вы решите не использовать его на этот раз, это довольно злая функция.
Ссылки
- Похоже на хороший базовый пример использования скриптинговой службы: http://www.jankoatwarpspeed.com/post/2008/05/14/asp-net-ajax-basics-calling-scriptservices-using-javascript.aspx
- ASP.NET Ajax Extenders, следующие логические шаги по интеграции Ajax в ваши элементы управления. http://weblogs.asp.net/scottgu/archive/2007/08/19/using-asp-net-ajax-control-extenders-in-vs-2008.aspx