2015-09-30 39 views
0

我想发布一个JSON对象列表到控制器,我一直在试图关注这个帖子Passing A List Of Objects Into An MVC Controller Method Using jQuery Ajax但是我在控制台得到一个错误,说即使动作也找不到资源在控制器中,我将它传递给正确的参数,因此动作方法不会在断点上发生​​。AJAX POST到MVC5的操作方法

[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

尝试:'网址:<%= ResolveUrl(“〜/ Dashboard/EditWidget”)%>',' – Hackerman

+0

@PaulAbbott你是对的,你可以把它添加为答案,以便我可以标记为正确的? – Johnathon64

回答

1

你的控制器动作是奇异

public ActionResult EditWidget()

,但你的AJAX调用是复数

url: 'Dashboard/EditWidgets/

0

这可能与你的网址:

url: 'Dashboard/EditWidget/', 

也许尝试

url: '/Dashboard/EditWidget/', 

正斜杠告诉它启动我认为,在根的搜索其在顶层找一个文件夹