在客户端使用AJAX从javascript调用一些业务逻辑的最有效的方法是什么?看起来你可以直接从javascript调用一个[WebMethod]在aspx(在我的情况下,我使用JQuery帮助)或者你可以直接调用.asmx。哪个呼叫减少开销?什么是最佳实践?
此外,[ScriptService]属性在类上做什么?我从来没有使用过这个在我的.aspx [WebMethod]方法,一切似乎工作正常。
我希望这是一个纯客观的问题。提前致谢!
在我看来ScriptService的东西在asp.net是一个隐藏的宝石。对脚本服务的调用不会回传表单数据viewstate,他们是精益,快速的JSON有效载荷。
原文链接:https://www.f2er.com/ajax/160713.html最好的部分,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的帮助来调用服务,并获得一个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的东西。即使你决定不使用它这一次它是一个非常邪恶的功能。
>看起来像一个很好的使用脚本服务的基本示例:http://www.jankoatwarpspeed.com/post/2008/05/14/asp-net-ajax-basics-calling-scriptservices-using-javascript.aspx
> ASP.NET Ajax Extender,将Ajax集成到控件中的下一步逻辑步骤。 http://weblogs.asp.net/scottgu/archive/2007/08/19/using-asp-net-ajax-control-extenders-in-vs-2008.aspx