【问题标题】:How to call a codebehind function from javascript in asp.net?如何在 asp.net 中从 javascript 调用代码隐藏函数?
【发布时间】:2015-05-03 19:58:27
【问题描述】:

我想使用 javascript 从我的代码中调用一个函数。我使用了以下代码:

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

..."GetPart" 是函数名。但是,这是行不通的。请帮我解决这个问题。

【问题讨论】:

  • Here的可能重复
  • @Aria。我需要你所说的反面。我需要从 javascript 调用代码隐藏中的方法。
  • @charu 你试过我的回答了吗?
  • @Med.Amine.Touil。是的,我试过了。但我无法为 webmethod 添加命名空间。所以它不起作用。

标签: javascript c# asp.net


【解决方案1】:

你可以通过 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调用点击事件。 ('#<%=ID.ClientID%>').click(); 如果 OnClientClick 存在,它将调用您的 codeBehind 功能。

【讨论】:

  • ~/code_behind.aspx/Method 应该用例如.ResolveClientUrl解决
  • ~ 在纯 HTML 中不是有效的限定符,它只适用于 ASP.net,需要根据应用程序的虚拟路径进行解析,例如 .ResolveClientUrl("~/foo.aspx")msdn.microsoft.com/en-us/library/…
  • @AndreasNiedermair。我现在明白了:)
  • 您无需解决任何问题。只需写:url: yourpage.aspx/Method .
  • 没有静态可以吗?
【解决方案2】:

在 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 调用触发的事件。就像我们在没有鼠标的情况下单击按钮一样。
  • 是的。但是如果我使用更新面板,我可以更新特定部分吗?我应该更新的网格位于更新面板内。但它仍然无法正常工作。你对此有什么想法吗?
  • 对于javascript代码,相信你需要使用document.getElementById('').click();
  • @Nachiket 我想传递参数我该怎么做?
  • 或将ClientIDMode="Static" 添加到btnSample
【解决方案3】:

使用 ajax,您可以使用 JQuery 从 javascript 调用代码隐藏函数:

function : fnCheckSelection(){
    $.ajax({
        cache: false,
        url: "/GetPart"
        type: "POST",
        success: function (result) {

        },
        error: function (msg) {

        }
    });
}

【讨论】:

    【解决方案4】:

    试试这个

    您的函数代码

    [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)
                        {
    
                        }
                    });
    });
    
    });
    

    【讨论】:

    • 试试这个,如果您还有问题,请告诉我
    • 修复代码隐藏函数中的断点并检查它是否命中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    相关资源
    最近更新 更多