在C#中从jquery bootgrid获取排序方向

时间:2019-06-06 09:02:57

标签: javascript jquery asp.net-mvc sorting

我已经在.net mvc网页上设置了一个jquery bootgrid,它向我显示了一个带有一些命令的网格,例如排序,搜索自动完成,滚动页面。图书馆在这里:http://www.jquery-bootgrid.com/documentation

网格运行良好,我决定通过ajax将命令发送给后面的函数。然后,库将字符串列表发送到该函数,用于处理网格:

current 1
rowCount    10
sort[filename]  asc

其中filename是我要排序的列之一。它可以是sort [id],sort [name]或任何我设置的列。 值非常清楚,ajax将当前网格页面,行数和排序方向发送给函数。 但是当我进入函数时,我只能读取前两个值:

  public ActionResult AjaxRequestData(string current,string rowCount,string sort)

此定义从网页读取前2个值,但无法读取排序,因为var的实际名称是sort [filename],它不是字符串数组。如果我将sort声明为string或string [],结果始终为空。

如何在动作中声明变量?到目前为止,我可以使用formcollection [“ sort [filename]”],formcollection [“ sort [id]”]等读取排序,但是我有很多列,而且我真的不想为每个他们,对此还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

方法1 。 考虑您有带有“ col1,col2,col3,...”列的表。 您可以使用:

public ActionResult AjaxRequestData(string current,string rowCount,Sort sort){
    //sort.col1 == 'asc' (consider sorted by col1 in ascending order)
}

public class Sort
{
    public string col1 { get; set; }
    public string col2 { get; set; }
    public string col3 { get; set; }
    //... other columns
}

方法2。 您可以删除参数并手动解析数据。 (注意,我在这里使用发布而不是获取信息)

[HttpPost]
public object AjaxRequestData(){
    string jsonContent = Request.Content.ReadAsStringAsync().Result;
    Dictionary<string, string> keyvalues = new Dictionary<string, string>();
    string[] keyvalue_strings = jsonContent.Split('&');
    string sort_column = "";
    string sort_direction = "";
    for (var i = 0; i< keyvalue_strings.Length; i++)
    {
        var a = keyvalue_strings[i].Split('=');
        a[0] = a[0].Replace("%5B", "[").Replace("%5D", "]");
        keyvalues.Add(a[0], (a[1]));
        if (a[0].Contains("sort"))
        {
            sort_column = a[0].Replace("sort[", "").Replace("]", "");
            sort_direction = a[1];
        }
    }
    //now you have keyvalues, sort_column, sort_direction.
    //...
}