在codebehind中调用Web方法

时间:2015-09-01 11:34:26

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

我需要使用jquery ajax并使用vanilla javascript

在我的代码隐藏文件中调用Web方法

我可以使用asp.net PageMethods执行此操作,也可以使用asp.net MVC(调用控制器方法)。

使用Page Methods就像这样

 PageMethods.MethodName(...);

我知道如何调用WCF serviceWebService中的方法但我需要在javascriptJquery

中调用aspx.cs文件中的方法

我该怎么做?

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

1 个答案:

答案 0 :(得分: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