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