在我看来ScriptService的东西在asp.net是一个隐藏的宝石。对脚本服务的调用不会回传表单数据viewstate,他们是精益,快速的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
通过使用这样的设置,你甚至不需要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的东西。即使你决定不使用它这一次它是一个非常邪恶的功能。