《C#实现简易ajax调用后台方法》.doc
文本预览下载声明
在当前WEB当中,有些人都会抛弃的服务器控件,转而使用ajax来进行数据的交互和存储.
当我们大量使用ajax的时候,对于新手而言,肯定会创建很多的ashx或aspx页面,通过拼接参数,在ashx或aspx中对参数进行解析,
并根据某些特定的参数进行解析来判断当前的请求属于哪种类型的操作,然后手动获取Request.QueryString、Params、Form内的值,来实现功能.大致代码如下:
View Code
1 //html
2 名字:input id=name type=text/
3 input type=button value=查询 onclick=search()/
4 script type=text/javascript
5 function search(){
6 var name = $(#name).val();
7 //省略验证过程
8 $.ajax({
9 url: Customer.ashx,
10 data: { type: search, name : name },
11 dataType: json,
12 success: function(json){
13 //对于获取的数据执行相关的操作,如:绑定、显示等
14 }
15 });
16 };
17 /script
18 //ashx
19 public void ProcessRequest(HttpContext context)
20 {
21 var type = context.Request.Params[type];
22 if(type == search)
23 {
24 var name = context.Request.Params[name];
25 //获取数据,并转化为json
26 var json = ...//省略
27 context.Response.Write(json);
28 }
29 }
而且每个都只是做一些判断,根本没什么重要的业务在里面,于是乎我们就在想,有没有什么方法可以让我们在ajax内传递某些参数,达到直接反射类,访问对应的方法,自动处理参数等.
根据以上的一些要求,的确可以让我们在编码过程当中,减少很多的困惑和麻烦.那我们现在就一步步开始吧.
首先,我们先从ajax开始, 传递某些特定的值来反射对应的类,那么我们的第一反应就是将类的整个完整命名传递过去(因为我们并不能保证所有要调用的类都在同一个程序集内).
那么我们就在js内定义2个参数分别为assembly和fullName吧.我们假设Customer业务类的FullName为SysBLL.CustomerBLL且所在的程序集为SysBLL.
那么前面的例子ajax的修改大致如下:
View Code
1 script type=text/javascript
2 function search(){
3 var name = $(#name).val();
4 //省略验证过程
5 $.ajax({
6 url: BLLAshx.ashx,
7 data: { assemlby : SysBLL, fullName: SysBLL.CustomerBLL, method: Search, name : name },
8 dataType: json,
9 success: function(json){
10 //对于获取的数据执行相关的操作,如:绑定、显示等
11 }
12 });
13 };
14 /script
View Code
1 View Code
2 //ashx
3 namespace Common
4 {
5 public class BLLAshx : IHttpHandler
6 {
7 public void ProcessRequest(HttpContext context)
8 {
显示全部