У меня возникли проблемы с попыткой передать сложный объект JSON в действие контроллера MVC 4. Поскольку содержимое JSON является переменным, я не хочу, чтобы MVC сопоставлял отдельные свойства/элементы JSON с параметрами в списке параметров метода действий. Я просто хочу получить данные как один строковый параметр JSON в действии контроллера.
Здесь подпись моего метода действия:
[HttpPost]
[ValidateInput(false)]
public string ConvertLogInfoToXml(string jsonOfLog)
И вот моя попытка опубликовать некоторые данные JSON из моего браузера:
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
});
Когда я ударил точку останова в начале метода ConvertLogInfoToXML, jsonOfLog имеет значение null.
Если я изменю значение переменной json в JavaScript, чтобы свойство jsonOfLog было простой строкой, например.
json = { jsonOfLog: "simple string" };
тогда, когда моя точка останова в начале метода ConvertLogInfoToXML попадает, jsonOfLog - это значение строки (например, "простая строка" ).
Я попытался изменить тип параметра jsonOfLog в методе действий для объекта типа:
[HttpPost]
[ValidateInput(false)]
public string ConvertLogInfoToXml(object jsonOfLog)
Теперь, с исходным кодом JavaScript (где я передаю более сложный объект данных), jsonOfLog получает значение {object}. Но отладчик не показывает больше деталей в окне просмотра, и я не знаю, какие методы я могу использовать для работы с этой переменной.
Как передать данные JSON в контроллер MVC, где переданные данные являются сложным сложным объектом?
Спасибо, Notre