通过jQuery Ajax请求从.ashx文件调用不同的方法

时间:2014-07-17 12:20:02

标签: c# jquery asp.net ajax

我正在使用ASP.NET Web Forms应用程序,在前端我有jquery DataTable,开始使用来自{{1}的查询时有点困难我看到一个示例,其中dataTable文件用于此目的,它也适用于我,所以我最终使用.ashx文件来处理我的.ashx但是现在我需要从不同的地方发出一些dataTable请求,直到现在我在这里编写所有代码:

Ajax

但是将所有这些逻辑保存在一个地方变得越来越难,所以我想调用不同的方法,但同时将它们保持在同一个类public class TData : IHttpHandler { public void ProcessRequest(HttpContext context) { // Those parameters are sent by the plugin var iDisplayLength = int.Parse(context.Request["iDisplayLength"]); //more code... } } ,以便{{1}的所有逻辑1}}被保存在一个地方。

我试过了:

Tdata

在服务器端使用此代码:

dataTable

但实际上从未调用此方法,似乎使用此语法,请求将直接转到 $.ajax({ url: "/TData.ashx", type: "GET", data: { method: 'Test', args: { blabla: 'blabla' } }, }); 。我正在使用 public object Test(string blabla) { return string.Format("Hello {0}!", blabla); } 所以有没有办法在同一个类中添加其他方法,并从客户端使用public void ProcessRequest(HttpContext context)调用它们?

1 个答案:

答案 0 :(得分:3)

如果你真的想坚持*.ashx - 处理程序,你可以根据你的method参数重定向流程:

public class TData : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        switch (context.Request["method"])
        {
            case "test":
                Test(context);
                break;
            //other methods
            default:
                throw new ArgumentException("unknown method");
        }
    }

    public void Test(HttpContext context)
    {
        // Those parameters are sent by the plugin
        var iDisplayLength = int.Parse(context.Request["iDisplayLength"]);
        //more code...

        context.Response.Write(String.Format("Hello {0}!", blabla));
    }
}