ASP中的模型绑定数组.净MVC
Model binding array in ASP.NET MVC
我正在使用Tablesorter,目前使用Ajax实现服务器端分页。Tablesorter支持对多列进行排序,并在单击第一列时使用以下URL:
http://example.com/tablesorter/json?page=0&size=25&column[0]=1
上面的工作与我的(Tablesorter)控制器动作:
public JsonResult Json(int page, int size, int[] column)
但是如果我只按第二列排序,则调用以下URL,这将导致列为空。我猜是由于缺少零索引值。
http://example.com/tablesorter/json?page=0&size=25&column[1]=1
所以我的问题是:我能以某种方式模型绑定使用其他类型的给定的表格式或我将不得不重写表的URL格式?
按多列排序时,格式为:
http://example.com/tablesorter/json?page=0&size=25&column[0]=1&column[1]=1
您可以使用customAjaxUrl
选项来修改ajax url。
也许使用jQuery的$.param()
函数会有所帮助?
ajaxUrl: 'http://example.com/tablesorter/json?page={page}&size={size}',
customAjaxUrl: function(table, url) {
// sortList = [[1,0], [2,0]]
var sort = $.param({ column : table.config.sortList });
// result: "column[0][]=1&column[0][]=0&column[1][]=2&column[1][]=0"
return url + '&' + sort;
}
如果格式不工作,那么它可能需要一些服务器端调整?
如果您必须定义所有列,请尝试以下代码:
ajaxUrl: 'http://example.com/tablesorter/json?page={page}&size={size}',
customAjaxUrl: function(table, url) {
var i, v,
c = table.config,
s = c.sortList; // sortList = [[1,0], [2,0]]
for (i = 0; i < c.columns; i++){
v = 2;
if ($.tablesorter.isValueInArray(i, s)) {
$.each(s, function(j){
if (s[j] && s[j][0] === i) {
v = s[j][1];
}
});
}
// 0 = ascending; 1 = descending; 2 = unsorted
url += '&column[' + i + ']=' + v;
}
// result: "&column[0]=2&column[1]=0&column[2]=0&column[3]=2&column[4]=2"
return url;
}
如果这不起作用,那么我不知道该告诉你什么,因为我不太了解ASP。净,模型绑定。你可能也想看看这个答案
我知道这是一个老问题,但是我根据motie的答案做了一些修改。
customAjaxUrl: function(table, url) {
// build sort list
var config = table.config;
var sortList = config.sortList;
for (var i = 0; i < config.columns; i++){
var v = 2;
$.each(sortList, function(j, item){
if (item && item[0] === i) {
v = item[1];
}
});
// 0 = ascending; 1 = descending; 2 = unsorted
url += '&sortColumn[' + i + ']=' + v;
}
// build filter list
var filterList = config.pager.currentFilters;
for (var i = 0; i < filterList.length; i++) {
url += '&filterColumn[' + i + ']=' + filterList[i];
}
return url;
},
我的MVC动作声明看起来像这样
public ActionResult ListByPage(int page, int size, List<int> sortColumn, List<string> filterColumn)
{
}
相关文章:
- 将Javascript数组发送到控制器ASP.NET MVC
- 使用查询将对象数组发布到asp.net-mvc控制器操作的正确方法是什么
- 打印从Spring MVC Controller发送的字符串数组只显示“;toJSON”;在javascript中
- MVC:使用Web窗体视图引擎在javascript中迭代Viewbag数组
- 在数组 C# MVC 剃须刀中使用命名键
- 将列表<字符串>转换为客户端 ASP.NET MVC 上的 Json 数组
- 将2D对象数组C#转换为MVC中的Javascript
- 将选定值数组发送到控制器-MVC
- ASP.NET MVC:2d数组在从javascript传递到MVC控制器操作后为null
- AJAX只将数组的最后一个元素传递给MVC 5控制器
- 通过javascript将包含数组的对象数组传递给MVC操作
- 使用ajax将字符串数组传递给mvc控制器
- 将 MVC 4 Razor 变量转换为 JavaScript 数组
- Javascript对象数组到MVC操作几乎不起作用,但不是完全
- 如何在C# MVC的VIew中将列表数组拆分为单独的数组
- 如何将 JavaScript 数组发布到 MVC 3 控制器操作(由于文件下载而没有 AJAX)
- 将对象数组发送到 MVC 控制器
- 如何将 JSON 对象中的数组从 javascript 传递到 asp.net mvc 控制器方法
- Javascript数组发送到 asp.net MVC控制器
- 从 JSON 数组中获取值,在 MVC 视图中使用 jQuery 从 JSON 对象中检索值