我有一个javascript发布到一个动作方法,并带有一些数据。 这些数据的格式如下:
pageID 1
photos[1] 2
photos[2] 1
我的行动方法如下:
public ActionResult PosImage(IEnumerable<int> photos, int pageID)
当然,pageID在表单数据中出现,但照片始终为空。
ASP.MVC可以像这样绑定吗?
处理帖子的JS看起来如下:
var ids = { 'photos': {}, 'pageID': SitePhotos.site_id };
$('#stone-photo-sortable li').each(function (i) {
i++;
var id = $(this).attr('rel');
ids.photos[id] = i;
});
$.ajax({
type: "POST",
url: '/backend/site/posimage/?timestamp=' + new Date().getTime(),
dataType: 'json',
data: ids,
beforeSend: function () { },
complete: function () { },
success: function (html) {
if (html.worked == 1) {
Notify.add('success', 'New Positions saved to the database..');
} else {
Notify.add('failure', 'Couldn\'t save positions.');
}
}
});
答案 0 :(得分:1)
我还没有通过javascript完成它,但你的帖子数据应该是这样的:
photos: 1
photos: 2
photos: 3
您可能需要使用不同的$ .ajax重载,以便传递具有重复键名的帖子数据。
编辑似乎您要做的就是将traditional标志设置为true。
答案 1 :(得分:1)
在我看来,如果你将照片对象转过来并将它变成一个数组,这对你来说会更好:
var ids = { 'photos': [], 'pageID': SitePhotos.site_id };
$('#stone-photo-sortable li').each(function (i) {
ids.photos[i] = $(this).attr('rel');
});
答案 2 :(得分:0)
IEnumerable<int> photos
可以使用,但您的数组应始终以0
开头!不在1
从0
开始,MVC会将其解析为IEnumerable
在此处详细了解:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx