Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过jQuery Ajax请求从.ashx文件调用不同的方法_C#_Jquery_Asp.net_Ajax - Fatal编程技术网

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

C# 通过jQuery Ajax请求从.ashx文件调用不同的方法,c#,jquery,asp.net,ajax,C#,Jquery,Asp.net,Ajax,我正在开发一个ASP.NET Web表单应用程序,其中在前端我有jquery DataTable,最初操作DataTable之间的查询有点困难,我看到一个示例,其中.ashx文件用于此目的,它对我来说也很好,所以我最终还是使用了它使用.ashx文件来处理我的数据表,但是现在我需要从不同的地方发出一些Ajax请求,到目前为止,我正在这里编写所有的代码: public class TData : IHttpHandler { public void ProcessRequest(HttpCo

我正在开发一个
ASP.NET Web表单
应用程序,其中在前端我有
jquery DataTable
,最初操作
DataTable
之间的查询有点困难,我看到一个示例,其中
.ashx
文件用于此目的,它对我来说也很好,所以我最终还是使用了它使用
.ashx
文件来处理我的
数据表
,但是现在我需要从不同的地方发出一些
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...
    }
}
但是将所有这些逻辑放在一个地方变得越来越困难,所以我想调用不同的方法,但同时将它们放在同一个类
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)
。我使用的是
.NET 4.5
,那么有没有办法在同一个类中添加其他方法,并从客户端使用
jQuery Ajax
调用它们?

如果您真的想使用
*.ashx
-处理程序,您可以根据
方法
参数重定向流:

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));
    }
}

你已经看过
WebAPI
了吗?似乎是做这项工作的更好的工具…@ChrFin是的,但我有义务把它保存在
网络表单中,因为大学资格、经验等等。我正在考虑使用
.asmx
或使
.ashx
选项起作用的方向。我很确定你们的大学更容易理解
WebAPI
代码“他们不知道”,然后是一些
*。ashx
-黑客<代码>*.asmx
web服务与
WebAPI
没有太大区别,除了路由之外,还可以使用一些较新的功能(而且它们也不是“在
web表单
boundries”IMO中)。=>也许再和你的大学谈谈,试着说服他们使用为这份工作而设计的工具……附言:我的意思是“他们看起来如何”,而不是“他们在后台的工作方式”!我知道
WebAPI
,尽管我对它没有经验。当我们谈论这个项目将要使用什么的时候,我实际上是建议了它。决定不使用它。。这就是我的现实。谢谢。我会用这个,因为似乎没有“正确”的方法来做这类事情.“正确的方法”应该是
WebAPI
IMO-有时大学必须“被迫使用新的东西”,但在使用它们之后,它们很快就开始喜欢它们了-不只一次发生在我身上…
context.Request[“method”]
返回null,在ajax中,我将数据作为
数据:{method:'Vendor'},