如何在 asp.net 中从 javascript 调用代码隐藏函数?
Posted
技术标签:
【中文标题】如何在 asp.net 中从 javascript 调用代码隐藏函数?【英文标题】:How to call a codebehind function from javascript in asp.net? 【发布时间】:2015-05-03 19:58:27 【问题描述】:我想使用 javascript 从我的代码中调用一个函数。我使用了以下代码:
function fnCheckSelection()
some script;
window["My"]["Namespace"]["GetPart"](null);
..."GetPart"
是函数名。但是,这是行不通的。请帮我解决这个问题。
【问题讨论】:
Here的可能重复 @Aria。我需要你所说的反面。我需要从 javascript 调用代码隐藏中的方法。 @charu 你试过我的回答了吗? 请看这个:***.com/a/28829291/896276 @Med.Amine.Touil。是的,我试过了。但我无法为 webmethod 添加命名空间。所以它不起作用。 【参考方案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)
);
);
);
【讨论】:
试试这个,如果您还有问题,请告诉我 修复代码隐藏函数中的断点并检查它是否命中以上是关于如何在 asp.net 中从 javascript 调用代码隐藏函数?的主要内容,如果未能解决你的问题,请参考以下文章
在 asp.net core 5 MVC 视图中从 C# 代码调用 JavaScript 函数
如何在 c# ASP.net 中从 GridView 行进行单按钮照片上传
如何在 asp.net 核心中从返回零计数的主体正确映射数组