Wysyłanie danych JSON przez jQuery do akcji kontrolera ASP .NET MVC 4

Mam problem z próbą przekazania złożonego obiektu JSON do akcji kontrolera MVC 4. Ponieważ zawartość JSON jest zmienna, nie chcę, aby MVC mapował poszczególne właściwości / elementy JSON na parametry na liście parametrów metody działania. Chcę tylko uzyskać dane jako pojedynczy parametr ciągu JSON w akcji kontrolera.

Oto podpis mojej metody działania:

    [HttpPost]
    [ValidateInput(false)]
    public string ConvertLogInfoToXml(string jsonOfLog)

A oto moja próba opublikowania danych JSON z mojej przeglądarki:

    data = {prop: 1, myArray: [1, "two", 3]}; 
    //'data' is much more complicated in my real application
    json = {jsonOfLog: data};

    $.ajax({
        type: 'POST',
        url: "Home/ConvertLogInfoToXml",
        data: JSON.stringify(json),
        success: function (returnPayload) {
            console && console.log ("request succeeded");
        },
        error: function (xhr, ajaxOptions, thrownError) {
            console && console.log ("request failed");
        },
        dataType: "xml",
        contentType: "application/json",            
        processData: false,
        async: false
    });

Kiedy trafię na mój punkt przerwania na początku metody ConvertLogInfoToXML, jsonOfLog ma wartość NULL.

Jeśli zmienię wartość zmiennej „json” w JavaScript, aby właściwość jsonOfLog była prostym łańcuchem, np. :

json = { jsonOfLog: "simple string" };

wtedy, gdy mój punkt przerwania na początku metody ConvertLogInfoToXML zostanie trafiony, jsonOfLog jest wartością ciągu (np. „prosty łańcuch”).

Próbowałem zmienić typ parametru jsonOfLog w metodzie akcji na obiekt typu:

    [HttpPost]
    [ValidateInput(false)]
    public string ConvertLogInfoToXml(object jsonOfLog)

Teraz, dzięki oryginalnemu kodowi JavaScript (gdzie przekazuję bardziej złożony obiekt „data”), jsonOfLog pobiera wartość {object}. Ale debugger nie pokazuje więcej szczegółów w oknie zegarka i nie wiem, jakie metody mogę użyć do działania na tej zmiennej.

Jak przekazać dane JSON do kontrolera MVC, gdzie przekazywane dane są skomplikowanym obiektem złożonym?

Dzięki, Notre

questionAnswers(6)

yourAnswerToTheQuestion