JS+ICallBackEventHandler体验简单刷新


  杯具,昨天准备写的东西,电脑一直莫名其妙断电,郁闷好半天。废话少说,进入正题吧。

  现在一般我们需要无刷新时第一想到的就是用Jquery+ashx做,勿庸置疑,JQ的出现大大简化了操作,使得我们不用像之前那样写N长的JS代码来实现,并且使得一部分的代码再度分离,也许有的人觉得爽,但有的人就不一定了。针对于感觉不爽的人也许用的另一种方法,我现在也来做个Demo让大家讨论下。

  这种方法就是实现MS的一个接口ICallBackEventHandler,个人觉得他的好处是像普通的功能一样,不论是否刷新,所有的操作功能都写在aspx.cs文件中更符合我们平时的写代码的习惯,并且我个人也不喜欢去新建那么多的ashx文件。

前台JS部分

<script type="text/javascript" language="javascript">
        function CallServer(operate) {
            var param1 = $("#title").value;
            var param2 = $("#name").value;
            var sendParams=param1+"$"+param2+"$"+operate;    //设置param1,param2为要传递的参数,operate为所要做的操作注意:这里传递多个参数最好以比较特殊的字符进行分隔,以免和参数发生冲突,并且方便在后台方便解析

    //GetCallbackEventReference函数在客户端注册一个引用,表示该函数被调用时将会启用对一个服务器事件的客户端回调,参数:1、Page类;2、参数;3、接收参数的JS函数;               4、一般为null就可以了;详细说明参照http://msdn.microsoft.com/zh-cn/library/ms153103(VS.90).aspx
            <% =this.ClientScript.GetCallbackEventReference(this,"sendParams","Receive",null) %>

             }

    //定义接收返回值的函数
             function Receive(ReceivedValue)
             {
                $("#temp").html(ReceivedValue);  //相应的操作显示
             }
</script>

后台相应的aspx.cs文件

 

1 /// <summary>
2 /// 注意:这里需要实现ICallbackEventHandler接口
3 /// </summary>
4   public partial class _Default : System.Web.UI.Page,ICallbackEventHandler
5 {
6 protected void Page_Load(object sender, EventArgs e)
7 {
8 }
9
10
11
12 #region ICallbackEventHandler 成员
13 /// <summary>
14 /// 返回处理后的数据
15 /// </summary>
16 /// <returns></returns>
17   //返回操作后的数据,最好返回JSON格式,以便解析和调用
18 private static string value = string.Empty;
19 string ICallbackEventHandler.GetCallbackResult()
20 {
21 return value;
22 }
23 /// <summary>
24 /// 处理客户端提交的数据
25 /// </summary>
26 /// <param name="eventArgument">接收的前台的参数</param>
27 void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
28 {
29 string[] array = eventArgument.Split('$');
30 //操作
31 string operation = array[array.Length - 1];
32 switch (operation) {
33 case "Add":
34 value = Add();
35 break;
36 case "Del":
37 value = Del();
38 break;
39 }
40
41 }
42
43 #endregion
44 #region 你需要的逻辑操作
45 string Add()
46 {
47 return "add";
48 }
49 string Del()
50 {
51 return "del";
52 }
53 #endregion

 

 

如果有其它好方法,希望可以交流下!!

posted @ 2010-05-14 18:48  MyDreams  阅读(335)  评论(0编辑  收藏  举报