如何在Javascript上调用ASP.Net页面上的静态方法?

时间:2015-09-30 16:27:40

标签: javascript c# asp.net webmethod

很抱歉,如果这是一个简单的答案,但我似乎无法找到这个(在SO或Google上。)

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

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

另外,我想调用此方法而不进行回发。可以这样做,如果是这样,我该怎么做?

注意

我知道每个人都想要代码,但实际上,我正在寻找一个我可以放在OnClientClick事件中的代码段。像这样:

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

1 个答案:

答案 0 :(得分:1)

就像评论中的其他人已经说过的那样,你需要使用Ajax或PageMethods ......但是我想要清除一些关于它如何起作用的误解。

与客户端中运行的代码和运行在服务器中的代码有明显的区别 - 这是您无法直接从客户端代码调用服务器代码的方式 - 怎么会有?相反,您需要向服务器发出请求,其中代码“存在”,获取响应,并在客户端中执行有意义的操作 - 这就是PageMethods所做的:它打开了一个方法作为WebMethod并让客户端代码无缝地执行某些操作。

但你不应该这样做。

不要依赖于基本上是古老的框架(WebForms),而是使用jQuery的$.ajax(...)Promise对象以更明确的,框架无关的方式为您执行此操作。

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

答案很长:你可以使用Ajax发送服务器参数来调用C#代码,并对返回的结果做一些事情。

希望有所帮助!