我认为scriptService东西是asp.net中的隐藏宝石。调用脚本服务不会回传表单数据+ viewstate,它们是精简,快速的JSON有效负载。
最好的部分是,ASP.NET3.5的scriptmanager可以为您完成有关生成JS方法供您调用以及设置所需的任何JS类的大部分工作。
假设Person是C#类的一个简单示例,用于获取“ 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) { } }}在DetailsPage.aspx中
<asp:scriptManager ID="scriptManager1" runat="server"> <Services> <asp:ServiceReference Path="~/Services/PersonService.asmx" /> </Services></asp:scriptManager>
通过使用这样的设置,您甚至不需要JQuery的帮助就可以调用服务并获取C#Person类的JS版本,.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



