如何在ASP.NET中从JavaScript调用CodeBehind函数?

16
我想在我的代码后台使用JavaScript调用一个函数。我使用了以下代码:

我想在我的代码后台使用JavaScript调用一个函数。我使用了以下代码:

function fnCheckSelection() {
some script;
window["My"]["Namespace"]["GetPart"](null);
}

...其中"GetPart"是函数名称。然而,它没有起作用。请帮帮我。


1
@Aria,我需要你说的相反的方法。我需要从javascript中调用codebehind中的一种方法。 - charu
1
请查看这个:http://stackoverflow.com/a/28829291/896276 - pangular
@Med.Amine.Touil 我尝试添加了那个,但是在 [webmethod] 上出现了错误。 - charu
@charu 这是什么错误或异常?而且它是 [WebMethod]。它是区分大小写的。 - Med.Amine.Touil
好的,你可以使用ajax来完成相同的功能。我可以提供一个例子,你可以参考一下,如果还有问题,请告诉我。 - Arunprasanth K V
显示剩余8条评论
4个回答

31

在JavaScript中:

    document.getElementById("btnSample").click();

服务器端控制:

    <asp:Button runat="server" ID="btnSample" ClientIDMode="Static" Text="" style="display:none;" OnClick="btnSample_Click" />

C#

    protected void btnSample_Click(object sender, EventArgs e)
    {

    }

虽然这是一种简单的方法……


它会显而易见地重新加载。当您单击服务器控件时,ASP.NET始终会加载页面,然后调用由JavaScript调用触发的事件。就像我们没有使用鼠标点击按钮一样。 - Nachiket
2
是的。但如果我使用Update Panel,我可以更新特定部分,对吧?而我的表格应该更新在Update Panel中。但它仍然不工作。你有任何想法吗? - charu
3
对于这段 JavaScript 代码,我认为你需要使用 document.getElementById('<%=btnSample.ClientID%>').click();。 - dcp
@Nachiket 我想传递参数,我该怎么做? - IdkWhy
1
或者将 btnSample 添加 ClientIDMode="Static" 属性。 - KZee

10

你可以通过 ajax 调用实现此操作。

以下是 jQuery 示例:

$.ajax({
            type: "POST",
     url:"~/code_behind.aspx/Method",
            data: dataPost,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
    ....
    });

这里有API文档, 还有对应的代码实现。

[WebMethod]
public static yourType Method (Params){}

或者您可以在updatePanel中添加一个隐藏的按钮,并使用js调用click事件。 ('#<%=ID.ClientID%>').click(); 这将触发OnClientClick(如果存在),然后是您的codeBehind函数。


应该使用例如.ResolveClientUrl来解析~/code_behind.aspx/Method。 - user57508
~在纯HTML中不是有效的限定符,它只适用于ASP.net,并且需要根据应用程序的虚拟路径进行解析,可以通过例如.ResolveClientUrl("~/foo.aspx")来实现。 - user57508
@AndreasNiedermair。我现在明白了 :) - Med.Amine.Touil
你不需要解决任何问题,只需编写:url: yourpage.aspx/Method - Roland
1
我可以不使用静态来完成吗? - Cibo FATA8

5

试试这个

您的代码后台函数

[WebMethod]
public  static void GetPart() {

               //your code goes here
}  

. Javascript

$(document).ready(function () {

 $("#btnname").click(function () {

 $.ajax({
                    type: "POST",
                    url: "/youraspxpagename.aspx/GetPart",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (msg)
                    {

                    }
                });
});

});

尝试一下这个,如果你还有问题,请告诉我。 - Arunprasanth K V
在代码后端函数中设置一个断点,并检查它是否被触发。 - Arunprasanth K V

-1
使用ajax,您可以使用JQuery从javascript调用一个codebehind函数:
function : fnCheckSelection(){
    $.ajax({
        cache: false,
        url: "/GetPart"
        type: "POST",
        success: function (result) {

        },
        error: function (msg) {

        }
    });
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接