如何使用 JavaScript / .Net 调用后台代码方法 / 服务器端脚本 / 服务器端静态方法 / 非静态方法






2.32/5 (13投票s)
2007年10月8日
2分钟阅读

79363

1049
设计此模块的基本思想是提供一个使用 JavaScript 和 Asp.Net 调用服务器端方法或服务器端脚本的思路。在本例中,我使用两种不同的技术来调用静态方法和非静态方法:Ajax.Net 和客户端回调。
引言
设计此模块的基本思想是提供一个使用 JavaScript 和 Asp.Net 调用服务器端方法或服务器端脚本的思路。在本例中,我使用两种不同的技术来调用静态方法和非静态方法。大多数程序员都熟悉这些技术,在这里通过演示,我试图简化问题。
1) 使用 Ajax.Net ScriptManager 调用静态方法
2) 客户端回调调用非静态方法
使用 Ajax.Net ScriptManager 调用静态方法
使用此技术时需要注意的重要事项:-.aspx 页面
步骤 1:将 ScriptManger 的 EnablePageMethods 属性设置为 "true"
// //<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server"/> //
步骤 2:要在客户端脚本中调用服务器端方法,请使用 ScriptManager 隐式创建的 'PageMethods' 对象。
// //PageMethods.ServerSideStaticMethod(ServerParams,Callback Client side mehod to receive resulty// , Callback method to receive any error during call)
步骤 3:要将结果返回到客户端,请使用以下方法
//JS function //function OnSucceeded(result, userContext, methodName)
步骤 4:要捕获处理过程中发生的任何错误,请使用
//JS function //function OnFailed(error, userContext, methodName)
使用 .cs 文件:步骤 5:使用 System.Web.Services.WebMethod 和 static 修饰符标记后台代码中的公共方法
//Code behind //[System.Web.Services.WebMethod] //public static String CallServerForDate() //{}
使用客户端回调调用非静态方法
使用此技术时需要注意的重要事项:-
用户 .cs 文件:步骤 1:首先,您的页面类应实现 ICallbackEventHandler 及其两个方法 GetCallbackResult() 和 RaiseCallbackEvent()
步骤 2:使用 ClientScriptManger 类的 GetCallbackEventReference 方法从后台代码注册客户端回调方法签名
//Code behind //Page.ClientScript.GetCallbackEventReference(this, "arg", // "CallbackOnSucceeded", "context", "CallbackOnFailed", true);
步骤 3:注册另一个客户端函数,该函数实际上在服务器端脚本中调用 RaiseCallbackEvent 方法,使用 ClientScriptManger 类的 RegisterClientScriptBlock 方法作为 CallServer(),此方法隐式调用客户端回调方法,以便与服务器进行某种数据通信。
//Code behind //String clientFunction = "function CallServer(arg, context){ " // + callBack + "; }"; // Page.ClientScript.RegisterClientScriptBlock(this.GetType(), // "Call To Server", clientFunction, true);
步骤 4:定义服务器端方法并在 RaiseCallbackEvent() 方法内部调用它。
//Code behind //void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument) // { // returnValue = ServerSideMethod(eventArgument); // } //
步骤 5:结果将由后台代码中的 GetCallBackResult() 方法发送回
//Code behind //string ICallbackEventHandler.GetCallbackResult() // { // return returnValue; // } //
步骤 6:使用 JavaScript 定义在步骤 2 中声明的方法签名
//JS function //function CallbackOnSucceeded(result,context){} //function CallbackOnFailed(result,context){} //
步骤 7:使用 JavaScript 调用客户端方法 CallServer(),该方法在步骤 3 中定义。