在MVC5中不断改变Url参数

时间:2015-04-02 13:52:07

标签: jquery asp.net-mvc asp.net-mvc-5 httprequest

我正在看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方法捕捉这个最优雅的方式是什么。我很难看到如何处理这个问题,我需要弄清楚我需要订购哪个属性以及在什么方向排序,但是要解决这个问题以上例子似乎很难。

2 个答案:

答案 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"});