2013-02-25 49 views
0

我正在尝试将Json数据发送到我的控制器操作。将JSON发送给控制器时遇到问题操作

JQuery的

function SaveConnection() { 
    debugger; 
    var CardConnection = { 
     ConnectionDetails: [] 
    }; 

    var allConn = jsPlumb.getAllConnections(); 
    var length = allConn["green dot"].length; 
    for (var i = 0; i < length; i++) { 
     CardConnection.ConnectionDetails.push({ 
      "CardIDFrom": allConn["green dot"][i].sourceId, 
      "CardIDTo": allConn["green dot"][i].targetId 
     }); 
    } 

    var CardDetails = $('#CardDetails'); 
    var url = CardDetails.attr('save-data'); 
    $.ajax({ 
     url: url, 
     data: JSON.stringify(CardConnection), 
     type: 'POST', 
     contentType: 'application/json, charset=utf-8', 
     dataType: 'json' 
    }); 
    return false; 
} 

控制器动作

public ActionResult SaveConnections(List<CardConnection> ConnectionList) 
{ 
    return Json(ConnectionList); 
} 

问题是 - 它总是显示行动参数无效。

回答

1

变量应该是这样的

var CardConnection = { 
     ConnectionList: [] 
    }; 

它不应该是这样的

var CardConnection = { 
     ConnectionDetails: [] 
    }; 

为什么?

在操作参数变量名是ConnectionList

0

我面临同样的问题。解决方案是告诉iis mime类型的json,因为它默认情况下无法处理它。

添加 <staticContent> <mimeMap fileExtension=".json" mimeType="application/json" /> </staticContent>

到web.config中的system.webServer的孩子。

+0

这仅适用于JSON数据直接由IIS(即本地.json文件)提供服务时。所问的问题显示了带有'return Json(...)'的控制器操作。这表明情况并非如此,所以这是行不通的。 – 2013-02-25 11:03:19

相关问题