当前位置: 首页 > 面试题库 >

.NET AJAX调用ASMX还是ASPX或ASHX?

东门仲卿
2023-03-14
问题内容

使用AJAX在客户端从javascript调用某些业务逻辑的最有效方法是什么?看来您可以直接通过javascript在aspx上调用[WebMethod](在我的情况下,我正在使用JQuery来提供帮助),也可以直接调用.asmx。哪个呼叫产生的开销更少?最佳做法是什么?

另外,[ScriptService]属性对类有什么作用?我以前从未在.aspx [WebMethod]方法上使用过此功能,而且一切似乎都工作正常。

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


问题答案:

我认为ScriptService东西是asp.net中的隐藏宝石。调用脚本服务不会回传表单数据+ viewstate,它们是精简,快速的JSON有效负载。

最好的部分是,ASP.NET3.5的scriptmanager可以为您完成有关生成JS方法供您调用以及设置所需的任何JS类的大部分工作。

假设Person是C#类的一个简单示例,用于获取“ Person”的详细信息。

在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的东西。即使您这次决定不使用它,它也是一个非常邪恶的功能。

链接

  • 看起来像一个使用脚本服务的基本示例:http : //www.jankoatwarpspeed.com/post/2008/05/14/asp-net-ajax-basics-calling-scriptservices-using-javascript.aspx
  • ASP.NET Ajax Extenders,将Ajax集成到控件中的下一个逻辑步骤。http://weblogs.asp.net/scottgu/archive/2007/08/19/using-asp-net-ajax-control-extenders-in-vs-2008.aspx


 类似资料:
  • 问题内容: 在托管的IIS7环境中,我正在寻找使用无扩展名文件名的最简单方法。简单来说,我有以下页面: index.html(或.aspx)-> domain.com gallery.html-> domain.com/gallery videos.html-> domain.com/videos等… 我只有很少的页面,没有动态代码,没什么特别的。我发现的所有示例或在开发的其他站点中使用的方法都围

  • 问题内容: 在我的项目中,我需要在运行时在数据库之间切换。我尝试使用Hibernate,但是卡在一个地方,我需要在数据库中映射对象和表。问题是,我有几个带前缀的表:documents2001,documents2002 …据我了解,我在运行时无法将类与表进行映射。我尝试使用iBatis,但问题出在运行时更改数据库。在iBatis中,这很难做到。 也许一些建议,我应该使用什么? 我的要求: 能够在运

  • 问题内容: 我将启动一个Java项目来开发桌面应用程序。什么用作表示层模式(MVC,MVP,MVVM或…)? …如果可能的话,给出一些可行的小例子… :-) 问题答案: 其实,你在寻找最终的帖子是 这样回答 这个答案 从卡斯滕Lentzsch共同领导(JGoodies数据的名望)在 秋千框架和最佳实践 旋启式框架和最佳实践 主题。 你好, 多年来,我一直在编写Swing应用程序,很多人都觉得它很优

  • 我正在尝试向asmx soap web服务发送一些数据,一直在尝试,但确实成功发送了。我得到的错误是: 08-13 20:51:12.571:带系统。err(8885):SoapFault-faultcode:“soap:Server”faultstring:“服务器无法处理请求--- 以下是web服务URL:http://87.248.129.182:8090/PostPhotoInfo.asm

  • 本文向大家介绍jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx),包括了jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)的使用技巧和注意事项,需要的朋友参考一下 在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下。 (1)通过aspx.cs的静态方法+WebMethod进行处

  • 问题内容: 我有一个页面可以通过Ajax加载其他页面(请考虑使用框架,除非没有框架)。 显然,这些页面都可以独立调用,因此我想检测是否通过Ajax调用了它们,如果不是,则重定向到主Ajax页面。 这些页面是php页面,因此我也可以访问它。 指数: 问题答案: 使用该对象进行请求时,现代浏览器会添加以下请求标头: 在PHP中,使用以下命令检查此标头的存在: