我认为ScriptService是ASP.NET中的一个隐藏宝石。调用Script Service不会传回表单数据和视图状态,而是轻量、快速的JSON负载。
最棒的部分是,ASP.NET 3.5的ScriptManager可以帮您完成大部分工作,包括为您生成要调用的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) {
document.getElementById('txtFirstname').value = result.Firtname;
}
无论如何,值得一看的是ASP.NET Ajax ScriptService功能。即使您决定这次不使用它,它也是一个相当不错的特性。
链接