带有jQuery数据表的C#MVC:从GET中检索变量

时间:2014-02-03 17:02:11

标签: c# asp.net-mvc datatables jquery-datatables

这是Datatables.net发送给我的MVC操作的查询字符串:

  

sEcho = 8&安培; iColumns = 6&安培; sColumns =安培; iDisplayStart = 0&安培; iDisplayLength = 10安培; mDataProp_0 = HomeCountry&安培; mDataProp_1 = HostCountry&安培; mDataProp_2 = YearOneRate&安培; mDataProp_3 = YearOtherRate&安培; mDataProp_4 = RateType&安培; mDataProp_5 =控制与安培; SSEARCH = &安培; bRegex =假安培; sSearch_0 =安培; bRegex_0 =假安培; bSearchable_0 =真安培; sSearch_1 =安培; bRegex_1 =假安培; bSearchable_1 =真安培; sSearch_2 =安培; bRegex_2 =假安培; bSearchable_2 =真安培; sSearch_3 =安培; bRegex_3 =假安培; bSearchable_3 =真安培; sSearch_4 =安培; bRegex_4 =假安培; bSearchable_4 =真安培; sSearch_5 =安培; bRegex_5 =假安培; bSearchable_5 =真安培; iSortCol_0 = 1&安培; sSortDir_0 = ASC&安培; iSortingCols = 1&安培; bSortable_0 =真安培; bSortable_1 =真安培; bSortable_2 =真安培; bSortable_3 =真安培; bSortable_4 =真安培; bSortable_5 =假安培; _ = 1391446190711

这是我在MVC中的控制器操作头:

public JsonResult GetData(int sEcho, int iDisplayStart, int iDisplayLength, string sSearch)

我的问题是:如何获取这些变量(?):

  

bSortable_0 =真安培; bSortable_1 =真安培; bSortable_2 =真安培; bSortable_3 =真安培; bSortable_4 =真安培; bSortable_5 =假

请注意bSortable_之后的数字是0到5之间的数字。

3 个答案:

答案 0 :(得分:1)

您可以从Request.QueryString集合中获取所有查询字符串参数,包括您未创建方法参数的参数。您可以在Request.QueryString.Keys中找到各个密钥。使用它,您可以遍历集合并获取每个键/值对。

答案 1 :(得分:1)

解析查询字符串 -

NameValueCollection queryCollection = HttpUtility.ParseQueryString(Request.Url.Query);
var items = queryCollection
                 .AllKeys
                 .SelectMany(queryCollection.GetValues, (k, v) => new { key = k, value = v })
                 .Where(p => p.key.Contains("bSortable"))
                 .ToList();

输出 -

enter image description here

答案 2 :(得分:1)

还有其他几种方法。你可以这样做:

string bSearchable0 = Request["bSearchable_0"];

或者您可以创建一个类并让您的action方法将其作为参数:

public class jQueryDataTableParam
{
    public int sEcho { get; set; }
    public int iDisplayStart { get; set; } 
    public int iDisplayLength { get; set; } 
    public string sSearch { get; set; }
    public bool bSearchable_1 { get; set; }
    public bool bSortable_1 { get; set; }
    //....
}

使用上述方法使您的操作方法看起来更像

public JsonResult GetData(jQueryDataTableParam param)