您的位置:首页 > 其它

一般处理程序的调用

2018-01-09 22:22 176 查看
在一般处理程序定义多个方法,通过ajax调用指定的方法

public class Handler1 : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
//获取要调用的方法
string action = context.Request["action"].ToString();

System.Reflection.MethodInfo methodInfo = this.GetType().GetMethod(action);
if (methodInfo != null)
{
//在这里调用请求的action
methodInfo.Invoke(this, new object[] { context });
}
}
public void GetList(HttpContext context)
{

context.Response.Write("returns jsonData");
}
public bool IsReusable
{
get
{
return false;
}
}
}
Js

<script type="text/javascript">
$.ajax({
url: "Handler1.ashx",
type: "Post",
data: "action=GetList",//请求Handler1.ashx下面的GetList方法
success: function (data) {
alert(data);

},
error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); }
});

</script>


优化方案

一般处理程序Base

public class HandlerBase : IHttpHandler
{
protected HttpContext Context { get; set; }
protected HttpRequest Request { get; set; }
protected HttpResponse Response { get; set; }

public virtual void ProcessRequest(HttpContext context)
{
Context = context;
Request = context.Request;
Response = context.Response;
//获取要调用的方法
string action = context.Request["action"].ToString();
System.Reflection.MethodInfo methodInfo = this.GetType().GetMethod(action);
if (methodInfo != null)
{
//在这里调用请求的action
//methodInfo.Invoke(this, new object[] { context });
methodInfo.Invoke(this, new object[] { });
}
}

public bool IsReusable
{
get
{
return false;
}
}
}一般处理程序Handler1.ashx
public class Handler1 : HandlerBase
{
public void GetList()
{
var name = Request.Form["name"];
Response.Write("returns jsonData");
}

}客户端
<script type="text/javascript">
$.ajax({
url: "Handler1.ashx",
type: "Post",
data: "action=GetList&name=lily",//请求Handler1.ashx下面的GetList方法
success: function (data) {
alert(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) { alert(textStatus); }
});

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: