在我看来,ScriptService 是 asp.net 中隐藏的宝石。对脚本服务的调用不会回传表单数据 + 视图状态,它们是精简、快速的 JSON 有效负载。
这是最好的部分,ASP.NET3.5 的脚本管理器可以为您完成大部分工作,包括生成供您调用的 JS 方法以及设置所需的任何 JS 类。
一个获取“Person”详细信息的简单示例,假设 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 */
}
}
}
在 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 的东西会更值得。即使您决定这次不使用它,它也是一个非常邪恶的功能。
链接