c# - 如何从 JavaScript 调用服务器端函数?

标签 c# asp.net javascript .net-3.5

我有一个 JavaScript 函数,我试图从其中调用服务器端函数 WebSchedule.Client.RadGrid1_SelectedIndexChanged。这是代码:

<script type="text/javascript">

     function RowSelected(sender, args) 
     {
         var dataKeyValue = args.getDataKeyValue("Order_No");
         document.getElementById("txtOrderno").value = dataKeyValue;
         WebSchedule.Client.RadGrid1_SelectedIndexChanged(sender, args);
     }
 </script>

但是,我收到错误“WebSchedule 未定义”。我做错了什么?

最佳答案

查看所谓的 page methods .

顺便说一句,这应该是服务器端方法还是客户端方法?

function RowSelected(sender, args) { 
    var dataKeyValue = args.getDataKeyValue("Order_No");      
    document.getElementById("txtOrderno").value = dataKeyValue;
    WebSchedule.Client.RadGrid1_SelectedIndexChanged(sender, args); 
} 

所以 - 在我看来这是一个 javascript 函数。

据我了解,RadScriptManager继承自System.Web.UI.ScriptManager。这就是 EnablePageMethods 属性的作用: “获取或设置一个值,该值指示是否可以从客户端脚本调用 ASP.NET 页面中的公共(public)静态页面方法。”

这些粗体字意味着 - 由于缺乏 View 状态,您将不会在该服务器端方法中看到任何控件。

因此 - 考虑使用更新面板控件(我不知道它如何与 Telerik 控件一起使用)或确保您的服务器端方法完全无状态(通过 JavaScript 函数传递所需的数据)。

无论如何 - 在我看来,您应该更仔细地研究页面方法的性质。

关于c# - 如何从 JavaScript 调用服务器端函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1012400/

相关文章:

c# - 当表存在时,代码优先 EntityFrameworkCore.Sqlite 3.1.1 上为 "No such table"

c# - 使用 Single.TryParse 解析 float 失败

c# - Varbinary 最大图像

asp.net - Windows Azure - 内容长度不匹配的频繁协议(protocol)违规

C# SQL 创建表,如果它不存在

c# - 如何在 gridview 的 boundfield 列中换行文本

asp.net 网络统计 - 谷歌分析

Javascript:为函数中创建的表格的偶数行和偶数单元格着色

javascript - Mocha JS : How to reference members from asynch before function in describe/it test functions

javascript - React-native redux - this.props 未从 AsyncStorage 定义