使用 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)
{
}
我已经实现了一个 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)
{
}