实现免刷新需要客户端的2个Javascript方法和服务器端的2个.NET方法配合使用
一、客户端的2个jscript方法:
1,一个发送方法,负责向服务端发送数据,这里设置其为send(arg, content),arg即为要发送的数据,是一个字符串,content无用,设置为空字符串""。此方法无法直接写在页面里,需要在服务器端的Page_Load函数中用Page.ClientScript属性(一个ClientScriptManager类的实例)来辅助生成:
(1) 获得方法体:
string funcBody = Page.ClientScript.GetCallbackEventReference(Control control, string firstArgName, string receiveMethodName, string secondArgName)
control:一般用this
firstArgName:客户端发送方法的第一个参数的名字,此即为字符串"arg"
receiveMethodName:客户端的接收方法的名字,此即为"received"
secondArgName:客户端发送方法的第二个参数的名字,此即为"content"
(2) 生成方法:
string func = "function sendMethoName ( firstArgName, secondArgName ){" + funcBody + "}";
sendMethoName:客户端发送方法的名称,此应为"send"
firstArgName:客户端发送方法的第一个参数的名称,此应为"arg"
secondArgName:客户端发送方法的第二个参数的名称,此应为"content"
(3) 添加方法:
Page.ClientScript.RegisterClientScriptBlock(Type type, string key, string script)
type:防重复,一般用this.GetType()
key:同上,防重复的标记,随便
script:要添加的js代码块,这里用前面生成的func
2,一个接收方法(回调方法),负责响应服务端的回复,设其为received(val),val即为服务端返回的数据,是一个字符串。
此方法可以自己在页面里用<script></script>定义
二、服务端的2个.NET方法:此2方法来自于ICallbackEventHandler接口,因此需要页面类实现该接口。该接口的两个方法如下:
1,public void RaiseCallbackEvent(string data)
当客户端向服务端发送了数据,本方法即被触发,参数data为客户端送来的数据,即客户端方法send(arg, content)中的arg
*在本方法以及下面那个方法中,不能向输出流写东西。要动态免刷新地更改页面的显示内容只能在客户端的reveived函数中进行。
2,public string GetCallbackResult()
此方法的返回值将被发送给客户端,也就是客户端方法received(val)的参数val