【问题标题】:How do I call a static method on my ASP.Net page, from Javascript?如何从 Javascript 在我的 ASP.Net 页面上调用静态方法?
【发布时间】:2015-09-30 16:27:40
【问题描述】:

对不起,如果这是一个简单的答案,但我似乎找不到这个(在 SO 或 Google 上)。

我有一个带有 GridView 的 aspx 页面,每条记录都有一个按钮。

我需要做的是对从底层页面类请求一些数据的每条记录执行一些 Javascript。类上的方法是静态的,所以我对实例不感兴趣。

另外,我想在不进行回发的情况下调用此方法。可以这样做吗?如果可以,我该怎么做?

注意

我知道每个人总是想要代码,但本质上,我正在寻找可以放入 OnClientClick 事件中的 sn-p。像这样的:

<asp:Button id="myButton" 
    runat="server" 
    ... 
    OnClientClick='PageClass.UserMustConfirm()?confirm("Are you sure you want to continue?") : true ' />

【问题讨论】:

  • 使用Ajax调用方法
  • 试试this answer about PageMethods,一定能帮到你
  • 很抱歉,我对 Web 开发很陌生(作为 winforms/wcf 开发人员已有 10 多年了。)我当然知道“ajax”是什么意思,但我不确定如何从传统的 aspx、webforms 对象正确设置所有这些。此外,值得一提的是,此调用发生在 UserControl 中。我需要调用 UserControl 上的方法。很抱歉有任何混淆(尤其是我自己。:P)
  • @EnriqueZavaleta:这可能会有所帮助。让我从这个角度进行研究......
  • 如果您的示例代码描述了您的真正需求,而不仅仅是一个简化的示例,那么您似乎需要调用服务器端方法才能知道是否应该显示确认。如果是这样,也许您可​​以将逻辑移动到(例如)OnRowDataBound 事件?那么你根本不需要调用服务器端方法......

标签: javascript c# asp.net webmethod


【解决方案1】:

就像 cmets 中的其他人已经说过的那样,您将需要使用 Ajax 或 PageMethods...但我想首先澄清您可能对它的工作原理存在的一些误解。

在客户端代码与在服务器中运行的代码之间存在明显的区别—​​—这不是你直接从客户端代码调用服务器代码的方法——怎么可能呢?相反,您需要向该代码“存在”的服务器发出请求,获取响应,并在客户端中对其执行一些有意义的操作——这就是 PageMethods 所做的事情:它以 @987654322 的形式打开一个方法@ 并让客户端代码无缝地做某事。

但你不应该那样做。

不要依赖于基本上是一个古老的框架 (WebForms),而是考虑使用 jQuery 的 $.ajax(...)Promise 对象以更明确、与框架无关的方式为您完成这项工作。

简短回答:您不能直接从运行的 JavaScript 调用 C#(至少在浏览器中)。

长答案:您可以使用 Ajax 发送服务器参数以调用 C# 代码并对返回的结果执行某些操作。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2015-08-17
    • 2010-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2012-03-06
    相关资源
    最近更新 更多