加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.NET AJAX调用ASMX或ASPX或ASHX?

发布时间:2020-12-16 03:18:24 所属栏目:百科 来源:网络整理
导读:在客户端使用AJAX从javascript调用一些业务逻辑的最有效的方法是什么?看起来你可以直接从javascript调用一个[WebMethod]在aspx(在我的情况下,我使用JQuery帮助)或者你可以直接调用.asmx。哪个呼叫减少开销?什么是最佳实践? 此外,[ScriptService]属性在
在客户端使用AJAX从javascript调用一些业务逻辑的最有效的方法是什么?看起来你可以直接从javascript调用一个[WebMethod]在aspx(在我的情况下,我使用JQuery帮助)或者你可以直接调用.asmx。哪个呼叫减少开销?什么是最佳实践?

此外,[ScriptService]属性在类上做什么?我从来没有使用过这个在我的.aspx [WebMethod]方法,一切似乎工作正常。

我希望这是一个纯客观的问题。提前致谢!

在我看来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

<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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读