这是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之间的数字。
答案 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();
输出 -
答案 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)