我正在尝试将一个JSON对象列表发布到控制器,我一直在尝试关注这篇文章Passing A List Of Objects Into An MVC Controller Method Using jQuery Ajax但是我在控制台中收到一条错误,说即使操作在,也无法找到资源控制器和我传递正确的参数,因此动作方法不会在断点上被击中。
[HttpPost]
public ActionResult EditWidget(List<SaveWidgetModel> widget)
{
if (ModelState.IsValid)
{
foreach (var item in widget)
{
var targetWidget = db.widgets.Where(EditWidget => EditWidget.WidgetCode == item.id).FirstOrDefault();
targetWidget.x = item.x;
targetWidget.y = item.y;
targetWidget.height = item.height;
targetWidget.width = item.height;
db.Entry(targetWidget).State = EntityState.Modified;
db.SaveChanges();
}
return RedirectToAction("Index");
}
return new EmptyResult();
}
这是我的javascript代码
function SaveDashboard(){
var gridArray = _.map($('.grid-stack .grid-stack-item:visible'), function (el) {
el = $(el);
var gridID = el.find('.grid-stack-item-content.ui-draggable-handle').first().attr('id');
var node = el.data('_gridstack_node');
return {
id: gridID,
x: node.x,
y: node.y,
width: node.width,
height: node.height
};
});
gridArray = JSON.stringify({ 'widget' : gridArray});
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: 'Dashboard/EditWidgets/',
type: 'POST',
data: gridArray,
success: function (dataset) {
},
failure: function (xhr, error) {
console.log(xhr)
console.log(error)
},
});
}
答案 0 :(得分:1)
你的控制器动作是单一的
public ActionResult EditWidget()
但您的AJAX调用是复数
url: 'Dashboard/EditWidgets/
答案 1 :(得分:0)
这可能与您的网址有关:
url: 'Dashboard/EditWidget/',
也许试试
url: '/Dashboard/EditWidget/',
正斜杠告诉它在根目录中开始搜索,我认为它在顶层寻找一个文件夹