使用 Web Api 2 控制器和数据表进行检查请求查询

Inspecting Request Query With WebApi2 Controller and DataTables

我已经实现了一个 WebApi2 控制器,我正在使用它来 return 数据到 jQuery DataTable。我在从 URI 解析查询时遇到错误。 VS 抛出空异常错误,因为 RequestUri.Query 为空。

我已经检查了 Fiddler 中的请求,这是从 DataTable 代码发送到控制器的内容:

GET /api/GetMyStuff?sEcho=1&...

这里是控制器:

 [Route(Name ="GetMyStuff")]
        public SysDataTablePager Get()
        {
            NameValueCollection nvc = HttpUtility.ParseQueryString(Request.RequestUri.Query);
            string sEcho = nvc["sEcho"].ToString();
            int iDisplayStart = Convert.ToInt32(nvc["iDisplayStart"]);
            ...LINQ QUERIES HERE
            var MyStuffPaged = new SysDataTablePager();


           MyStuffPaged.iTotalRecords = count;
           MyStuffPaged.iTotalDisplayRecords = count;
           MyStuffPaged.aaData = materials.ToList();

        return MyStuffPaged ;
      }

我的JS代码如下:

 $(document).ready(function () {

    $('table.grid').dataTable({
        "bServerSide": true,
        "sAjaxSource": "api/GetMyStuff",
        "sAjaxDataProp": "aaData",
        "bLengthChange": false,
        "sPaginationType": "full_numbers",
        "aoColumns": [
                    { "sName": "Name",
                        "bSearchable": false,
                        "bSortable": false,
                        "fnRender": function (oObj) {
                            return '<a href=\"Details/' + 
                            oObj.aData[0] + '\">View</a>';
                        }
                    },
                    { "sName": "Description" }

    ]
    });
});

为完整起见,这是我的 return 模型

public class SysDataTablePager
{
    public string sEcho { get; set; }
    public int iTotalRecords { get; set; }
    public int iTotalDisplayRecords { get; set; }
    public List<StuffModel> aaData { get; set; }
}

解决上面关于使用 MVC 框架为您解析查询的评论:

    [Route(Name ="GetMyStuff")]
    public SysDataTablePager Get(string sEcho, int iDisplayStart)
    {
    }