zoukankan      html  css  js  c++  java
  • 在ashx中利用反射+jquery轻松处理ajax

    在ashx中利用反射+jquery轻松处理ajax 含Demo源码

    由于jquery的出现,编写js代码已经变得异常的平民化,同时现在的web也已经是ajax满天飞,哪天你自己写一个web不含ajax的拿不出手

       当然,在.net的控件模式开发中一种去控件化开发已经变的变得更加通用:jquery+ajax+ashx  这种方式更加适用于一些小应用的开发,轻量、简单、自由

       由于那时候太年轻,刚刚开始这种模式开发的时候 是一个ajax请求一个ashx页面,这样的结果可想而知,一个小的权限系统光光ashx文件就几十个了,而且文件名还大同小异,悲剧。

        后来做了一会儿变聪明了,把相同类别的请求都放到一个ashx文件中,每个请求传一个请求标志  通过switch来调用相应的请求方法,当然,这样要比原来好多了,至少没那么多ashx文件了,但是  每新建一个文件都要去添加switch方法,蛋疼啊  有木有,更加可耻的是 每次增删改一个请求都要去修改那个可恶的switch语句,烦啊

        后来知道了反射,知道可以用反射来动态调用方法,脑子一转,哇  好主意,查了相关资料,没几分钟就把这个框架写了出来,然后百度一搜,次奥,关于这种的都有那么多文章了,本来都不想再写这篇文章,重复造轮子啊 要被骂的有木有,不过想想代码都写了,而且还是自己写的,写篇文章纪念一下,而且这个东西感觉比网上的更加方便,实用,嘿嘿。

       下面就是这个handler主心骨鸡类的详解了

        首先在这个鸡类中定义几个默认的参数

        

      主要是定义默认的请求方式  GET或者POST  当然默认是POST,相对安全点嘛,并且个人用的也多,当然这个请求方式在子类中可以把它改掉呢

    还有就是请求的返回头,方法名称的参数   代码的注释里面都写得很清楚呢

          下面就是动态调用方法的核心代码啦(再这里给个反射连接的相关知识,不知道的点我哦

    //根据指定的请求类型获取方法名
                string action = this._httpReuqest[this._actionName];
                if (!string.IsNullOrEmpty(action))
                {
                    //获取方法的实例  非静态 需要Public访问权限 忽略大小写
                    MethodInfo methodInfo = this.GetType().GetMethod(action, BindingFlags.Instance|BindingFlags.Public|BindingFlags.IgnoreCase);
                    if (methodInfo != null)
                    {
                        //调用方法
                        methodInfo.Invoke(this, null);
                    }
                    else
                    {
                        throw new ApplicationException(string.Format("没有找到方法{0}", action));
                    }
                }
                else
                {
                    throw new ArgumentNullException("没有找到调用方法参数或者方法名为空");
                }

      核心代码够简单把  其实最核心的就是获取方法实例,当然该方法,两句啦 方便吧

          我们看看这个获取方法实例的代码

          主要是获取类中的非静态,公开访问,忽略名称大小写的方法,当然你如果不放心 其他的方法也被ajax跨域调用了,你可以给该方法的访问权限设为private或者protected  如果你还是不放心的话  可以喝其他的一样 自定义一个Attribute特征加在方法头上,不过个人在这里感觉没啥必要了

          

    核心的都给你们看了 那来看下鸡类的全部代码吧

    够简单把,然后写几个测试ashx页面继承该基类就可以啦

      下面来个post类型的

      很容易看懂吧,前台的html页面就不贴了

          如果看的同学实在是看不懂 那赶紧猛击我去下面源码

           还有设计不当之处请各位留言指正哦,共同进步哈

     
     
     
    标签: jqueryhandler反射ajax
  • 相关阅读:
    编译原理 十
    使用HighCharts实现实时数据展示
    img图片元素下多余空白解决方案
    jquery 滚动加载
    SVN服务器配置
    匿名对象和object的转换
    新浪微博开放平台OAuth授权解决方案(含代码)
    QQ互联OAuth2.0 .NET SDK 发布以及网站QQ登陆示例代码
    Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
    Senparc.Weixin.MP SDK 微信公众平台开发教程(六):了解MessageHandler
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2933779.html
Copyright © 2011-2022 走看看