Извините за неправильное форматирование или написание. Поскольку я пишу этот пост в спешке. :)
Я передаю данные json методу действия простого контроллера (контроллера MVC). Ниже приведен пример кода для справки.
JS-КОД:
var json = {IsInit: true, SearchParam: { Тип: "xx", Имя: "xx", сортировка: ""} };
Nx$(document).ready(function () {
Nx$.ajax({
async: true,
contentType: "application/json; charset=utf-8",
type: "POST",
url: "Home/Data",
dataType: "json",
data: JSON.stringify(json),
success: function (msg) {
alert('success');
},
error: function (jqxhr, textStatus, error) {
alert('fail');
}
});
Метод действия:
<HttpPost>
<Route("Data")>
Function GetData(ByVal IsInit As Boolean, ByVal SearchParam As Newtonsoft.Json.Linq.JObject) As ActionResult
Return Nothing
End Function
Теперь вышеуказанное действие вообще не вызывается. но если вы используете приведенный ниже код, он выполняет вызов, но SearchParam имеет только тип [объект], и вы не можете использовать какое-либо значение объекта searchParam.
<HttpPost>
<Route("Data")>
Public Function GetData(ByVal IsInit As Boolean, ByVal SearchParam As Object) As Object
Return Nothing
End Function
Я думаю, что он не может передать несколько параметров в запросе POST со сложным объектом json.
Как я могу получить данные JSON, переданные в метод действия контроллера MVC, чтобы данные SearchParam Json были преобразованы в JObject самостоятельно. т. е. первоначальная сигнатура первого метода действия должна использоваться без каких-либо серьезных изменений сигнатуры метода.
Немного наблюдений:
если бы я включил вышеуказанный метод действия как API в контроллере API; он начинает работать, но сказав, что вам нужно следовать приведенной ниже сигнатуре метода. нижеприведенный подход не работает для контроллера MVC. Не знаю почему?? Однако по какой-то причине; я не могу пойти с контроллером API.
<HttpPost> <Route("Data")> Function GetData(ByVal req As Newtonsoft.Json.Linq.JObject) As ActionResult Return Nothing End Function
Спасибо !!