我正在看Jquery BootGrid并遇到了一个奇怪的问题。 BootGrid在ajax Post中发布一个参数,该参数在任何给定请求中都会发生更改。
鉴于每次发布帖子时,我的MVC5 Action的帖子中的排序参数可能会有所不同,如下所示: -
sort[forename]='asc'
sort[forename]='desc'
sort[surname]='asc'
sort[surname]='desc'
sort[dateofbirth]='asc'
sort[dateofbirth]='desc'
用我的Action方法捕捉这个最优雅的方式是什么。我很难看到如何处理这个问题,我需要弄清楚我需要订购哪个属性以及在什么方向排序,但是要解决这个问题以上例子似乎很难。
答案 0 :(得分:1)
您可以按此搜索http://jsfiddle.net/a14v0cqc/7/:
var lookFor = [ "forename", "surname", "dateofbirth" ];
var sort = [];
sort['dateofbirth']='desc'
function whichIsPopulated(){
var value = "";
$(lookFor).each(function(i, key){
if(typeof sort[key] !== 'undefined'){
value = key;
return;
}
});
return value;
};
function valuePopulated(){
return sort[whichIsPopulated()];
};
alert(whichIsPopulated());
alert(valuePopulated());
如果你向lookFor数组添加另一个值,它也会检查它。
希望这就是你要找的东西。
答案 1 :(得分:1)
将服务器上的sort参数捕获为:
Dictionary<string, string> sort
值示例:
sort[Description] = asc //(key = Description, value = asc)
关键是要排序的字段和方向的值。 检查是否只是字典中的一个元素,因为如果没有选择字段,则参数有2个元素:
sort[controller]= controller name, sort[action] = action name
它对我有用。查看应传递给函数的所有参数的示例
[HttpPost]
public JsonResult yourfunction(int current, int rowCount, string searchPhrase, Dictionary<string, string> sort)
Javascript代码
var grid = $("#grid").bootgrid({
/* static URL */
ajax: "true",
url: "/controller/yourfunction"});