【问题标题】:calling Web Method inside codebehind在代码隐藏中调用 Web 方法
【发布时间】:2015-09-01 11:34:25
【问题描述】:

我需要使用 jquery ajax 和 vanilla javascript 在我的代码隐藏文件中调用 Web 方法

我可以用 asp.net PageMethods 做到这一点,也可以用 asp.net MVC(调用控制器方法)。

Page Methods 是这样的

 PageMethods.MethodName(...);

而且我知道如何调用WCF serviceWebService 中的方法,但我需要从javascriptJquery 调用aspx.cs 文件中的方法

我该怎么做?

我在Web Method 上尝试过[WebMethod],它是静态的,但它不起作用。我需要GetPost 解决方案

【问题讨论】:

  • 为什么要在服务端使用Jquery调用Web Method?
  • "但我需要从 javascript 或 Jquery 调用 aspx.cs 文件中的方法" 你不能在浏览器中而不是在服务器上运行 JavaScript,你想达到什么目的?
  • @BenRobinson 我的意思是通过 ajax
  • ajax 是一种浏览器技术,想在后面的代码中使用它是没有意义的。你是说你想从你的代码后面发出一个http请求吗?你当然可以这样做,但这与 ajax、jquery 或 javascript 无关。
  • @BenRobinson 我想用 ajax 调用来调用 webmethod。这有什么复杂的?

标签: javascript c# jquery asp.net .net


【解决方案1】:

正如您所说,您确实需要用 [WebMethod] 属性修饰的静态方法。已经有一段时间了,但这里是我在旧项目中使用的一些代码示例:

$.ajax({
    type: "POST",
    url: "AjaxBridge.aspx/GetPatientInfo",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: "{'personID':'" + personID + "'}",
    success: function (data) {
    }
});

我们有一个名为 AjaxBridge.aspx 的专用页面,它只处理这样的 ajax 调用(我个人不喜欢这种设计)。您也可以将它们直接嵌入到当前页面或 UserControl 中。只需确保引用相对于当前页面的正确路径或绝对路径即可。

被调用的实际服务代码如下所示:

[WebMethod]
public static PersonItem GetPatientInfo(int personID)
{
    ...
}

为了支持 HTTP GET,您可能需要在服务方法中添加以下属性:

[ScriptMethod (UseHttpGet = true)]

当然,将 ajax jquery 方法类型更改为 GET

【讨论】:

  • 是的,它对我来说很好用。试试看,如果你成功了告诉我
  • 我会稍后再试,但相信我会接受它。你目前从事什么技术,MVC?
  • 这适用于直接的 ASP.NET WebForms。如果您使用的是 MVC,您可以以类似的方式(在 jQuery 中)使用它,但可能需要在控制器中将代码隐藏作为操作处理
  • ASP.NET AJAX 页面方法不支持 GET,而仅支持 POST 请求。这是一项安全功能。
猜你喜欢
  • 2011-06-15
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 2018-02-06
  • 1970-01-01
相关资源
最近更新 更多