ashx文件使用

在项目开发中,只要用到ajax,一般都少不了使用vs的一般处理程序(ashx文件),下面详细介绍下该文件:

一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名。一个httpHandler接受并处理一个http请求,类比于Java中的servlet。类比于在Java中需要继承HttpServlet类,在。net中需要实现IHttpHandler接口,这个接口有一个IsReusable成员,一个待实现的方法ProcessRequest(HttpContextctx) 。程序在processRequest方法中处理接受到的Http请求。成员IsReusable指定此IhttpHnadler的实例是否可以被用来处理多个请求。
.ashx程序适合产生供 浏览器处理的、不需要 回发处理的数据格式,例如用于生成 动态图片动态文本等内容。
上面一段很熟悉,就是百度百科里对ashx的定义。
废话不说,直接贴代码:
一般处理程序的最简单代码为:
复制代码
<%@ WebHandler Language="C#" Class="LoginHandler" %>

using System;
using System.Web;

public class LoginHandler : IHttpHandler,{
    
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        string strEmail = context.Request["Email"];//接收参数
        string strPwd = context.Request["Pwd"];
        //书写业务逻辑
        context.Response.Write("Hello");
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}
复制代码

上面这种写法,一个功能可能就要对应一个ashx文件,项目里的文件可能比较多,不容易管理。如果我们想要在一个ashx文件中加入多个功能(即方法),我们就要引入反射的概念,相关ashx代码如下:

复制代码
<%@ WebHandler Language="C#" Class="AjaxHandler" %>

using System;
using System.Web;


public class AjaxHandler : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string Cmd = context.Request["cmd"];//接收方法名参数
        if (!string.IsNullOrEmpty(Cmd))
        {
            System.Reflection.MethodInfo Method = this.GetType().GetMethod(Cmd, System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);//通过反射机制,直接对应到相应的方法
            if (Method != null)
            {
                Method.Invoke(this, new object[] { context });
            }
        }
        else
        {
            context.Response.Redirect("~/Login.aspx");
        }
    }

    void DelContents(HttpContext context)
    {
        string strGuid = context.Request["Guid"];//接收参数
        context.Response.Write("OK");
    }
        
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
复制代码

 ajax代码,使用jqueryajax

复制代码
$.ajax({
                    type: "POST",
                    url: "AjaxHandler.ashx",
                    async: false,
                    data: "cmd=DelContents&Guid=" + id,
                    success: function (data) {
                        ret = data;
                    }
                });
复制代码

通过cmd传递方法名,来控制功能对应的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值