文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>基于IHttpHandler的Ajax封装应用

基于IHttpHandler的Ajax封装应用

时间:2011-03-12  来源:yangrong.g

我们知道,传统的ajax请求需要一个具体页面来接收请求,然后在这个页面的后端文件的P代码里根据业务需要写很多的case,例如下面这样:

protected void Page_Load(object sender, EventArgs e)
{
string strYwType = Request.QueryString("YwType");
switch (strYwType)
{
case "A":
//do something
break;
case "B":
//do something
break;
}
}

最近由于一个项目,团队内提出不想通过这种方式做ajax请求的处理,通道文件里面case太多了,阅读和维护都不方便。如是便有了下面这个方案对ajax的请求做了封装,方案的原理是利用IHttpHandler接口和IHttpHandlerFactory接口采用url重写的方式,将请求的页面地址直接映射到业务层的某个具体类上面(注意:实际请求的页面在WEB中不是存在的),例如上面的代码:

我们请求A.aspx页面,则可以直接在业务层添加A这个类来处理case “A”的情况,同理,我们可以请求B.aspx,则在业务层添加B这个类来处理case “B”的情况。注意:实际A.aspx和B.aspx是不存在的。

类关系图如下:

类说明:

AjaxHanle:自定义的HTTP请求处理协定,继承IHttpHandle,下面所有的业务处理都将继承此类,例如AjaxTest类。

AjaxHandleFactory:自定义的HTTP请求工厂。

MappingAttribute:参数属性描述类,用于描述url的参数与类中属性的映射关系,例如下面这样:

[Mapping("name",true)]
public string Name { get; set; }

Mappinger:属性映射,将接收的URL参数映射到相关类上标识为MappingAttribute的属性上。

MappingAttribute类和Mappinger类解决了url中参数的获取的问题的,AjaxHanle和AjaxHandleFactory类解决了请求页面映射到具体类上的问题。

我的例程中的例子是,请求Ajaxtest.aspx,可以直接映射到AjaxTest类上。

源码下载:http://files.cnblogs.com/yangrong/ajaxtest.rar

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载