2013-02-25 3 views
0

Я пытаюсь отправить Json Data в мое действие контроллера.Облицовочная проблема при отправке 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

Variable должно быть, как это

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 (...)'. Это говорит о том, что это не так, поэтому это не сработает. –

Смежные вопросы