很久没有写了,最近在做一个MVC项目,这是我做的第一个MVC项目。之前可以说多MVC一点都不了解,今天把昨天遇到的一个问题记录下来。MVC大神就请飘过吧,跟我遇到同样问题的可以进来看看。遇到的第一个问题是一个列表页保存排序时传二维数组的问题。以下是我的代码:
01 |
jQuery( "#btnSave" ).click( function ()
{ |
02 |
var list
= []; |
03 |
jQuery( "#lists>tbody>tr" ).each( function (i)
{ |
04 |
list.push({ "id" : this .cells[0].children.hidId.value, "sort" : this .cells[6].children[0].children[0].children.txtSortId.value
}); |
05 |
}); |
06 |
|
07 |
jQuery.ajax({ |
08 |
type: "post" , |
09 |
url: "@Url.Action(" NavSaveSortId ",
" Setting ")" , |
10 |
data:
jQuery.param({ sortinfo: list }), |
11 |
dataType: "json" , |
12 |
traditional: true , |
13 |
success: function (data)
{ |
14 |
var json
= eval( "(" +
data + ")" ); //必须加否则字符串不能序列化成json |
15 |
jQuery.gritter.add(json); |
16 |
}, |
17 |
error: function (data)
{ |
18 |
console.debug(data); |
19 |
} |
20 |
}); |
21 |
}); |
以上传过去的数据格式是一个数组类型,里面包括了id,sort属性。
后台action接收代码为:
01 |
[HttpPost] |
02 |
public JsonResult
NavSaveSortId(Dictionary< string , string >[]
sortinfo) |
03 |
{ |
04 |
for ( int i
= 0; i < sortinfo.Length; i++) |
05 |
{ |
06 |
int id
= Convert.ToInt32(sortinfo[i][ "id" ].ToString()); |
07 |
int sortId; |
08 |
if (! int .TryParse(sortinfo[i][ "sort" ].ToString().Trim(), out sortId)) |
09 |
{ |
10 |
sortId
= 99; |
11 |
} |
12 |
client.UpdateField(id, "sort_id=" +
sortId.ToString()); |
13 |
} |
14 |
} |
以上就是传输数组后台用Dictionary接收参数的实例。当然在实际使用时请记得加上安全验证以及数据校验。
然后在项目里面还用到了一个传输一维数组的功能这里也记录出来,代码和上面的类似,但是这个功能是用在批量删除的。
01 |
jQuery( "#btnDelete" ).click( function ()
{ |
02 |
bootbox.confirm( "确认要删除选中的记录吗?" , function (result)
{ |
03 |
if (result)
{ |
04 |
var idarry
= []; |
05 |
jQuery( "#lists>tbody>tr" ).each( function (i)
{ |
06 |
console.debug( this .cells[0].children[2].children[0].checked); |
07 |
if ( this .cells[0].children[2].children[0].checked)
{ |
08 |
idarry.push( this .cells[0].children.hidId.value); |
09 |
} |
10 |
}); |
11 |
jQuery.ajax({ |
12 |
type: "post" , |
13 |
url: "@Url.Action(" NavDel ",
" Setting ")" , |
14 |
data:
{ ids: idarry }, |
15 |
dataType: "json" , |
16 |
traditional: true , |
17 |
success: function (data)
{ |
18 |
var json
= eval( "(" +
data + ")" ); //必须加否则字符串不能序列化成json |
19 |
jQuery.gritter.add(json); |
20 |
}, |
21 |
error: function (data)
{ |
22 |
console.debug(data); |
23 |
} |
24 |
}); |
25 |
} |
26 |
}); |
27 |
}); |
这个数组应该比上面那种更常见后台接收就不需要用Dictionary。直接用数组string[]接收就可以了:
1 |
[HttpPost] |
2 |
public JsonResult
NavDel( string []
ids) |
3 |
{ |
4 |
//逻辑处理···· |
5 |
} |
其实在开发中还遇到了很多问题,可能是我第一次接触mvc。不过真的用了mvc之后确实不太愿意用webform了。欢迎各位感兴趣的同学们一起来交流学习