65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.32/5 (13投票s)

2007年10月8日

2分钟阅读

viewsIcon

79363

downloadIcon

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 中定义。

关注点

当开发人员希望在客户端和服务器之间传递非常少的信息时,这两种技术都非常强大。

历史

none


© . All rights reserved.