很抱歉,如果这是一个简单的答案,但我似乎无法找到这个(在SO或Google上。)
我有一个aspx页面,带有GridView,每个记录都有一个按钮。
我需要做的是在每个从底层页面类请求一些数据的记录上执行一些Javascript。该类的方法是静态的,所以我对该实例不感兴趣。
另外,我想调用此方法而不进行回发。可以这样做,如果是这样,我该怎么做?
注意
我知道每个人都想要代码,但实际上,我正在寻找一个我可以放在OnClientClick
事件中的代码段。像这样:
<asp:Button id="myButton"
runat="server"
...
OnClientClick='PageClass.UserMustConfirm()?confirm("Are you sure you want to continue?") : true ' />
答案 0 :(得分:1)
就像评论中的其他人已经说过的那样,你需要使用Ajax或PageMethods ......但是我想要清除一些关于它如何起作用的误解。
与客户端中运行的代码和运行在服务器中的代码有明显的区别 - 这是您无法直接从客户端代码调用服务器代码的方式 - 怎么会有?相反,您需要向服务器发出请求,其中代码“存在”,获取响应,并在客户端中执行有意义的操作 - 这就是PageMethods
所做的:它打开了一个方法作为WebMethod
并让客户端代码无缝地执行某些操作。
但你不应该这样做。
不要依赖于基本上是古老的框架(WebForms),而是使用jQuery的$.ajax(...)
和Promise
对象以更明确的,框架无关的方式为您执行此操作。
简短回答:你不能直接从运行的JavaScript中调用C#(至少在浏览器中)。
答案很长:你可以使用Ajax发送服务器参数来调用C#代码,并对返回的结果做一些事情。
希望有所帮助!