【发布时间】:2017-10-12 15:48:48
【问题描述】:
抱歉,格式或拼写错误。因为我在匆忙写这篇文章。 :)
我将 json 数据传递给简单控制器(MVC 控制器)的操作方法。这是以下示例代码以供参考。
JS 代码:
var json = {IsInit :true, SearchParam:{ Type:"xx",Name:"xx",sort: ""} };
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 的类型仅为 [object],您不能使用 searchParam 对象的任何值。
<HttpPost>
<Route("Data")>
Public Function GetData(ByVal IsInit As Boolean, ByVal SearchParam As Object) As Object
Return Nothing
End Function
我认为它无法在具有复杂 json 对象的 POST 请求中传递多个参数。
如何将 JSON 数据传递给 MVC 控制器的操作方法,以便 SearchParam Json 数据自行转换为 JObject。即最初的第一个 Action 方法签名应该在没有任何重大方法签名更改的情况下使用。
很少观察:
-
如果我在 API 控制器中将上述操作方法作为 api;它开始工作,但已经说过您需要遵循以下方法签名。以下方法不适用于 MVC 控制器。不知道为什么??但是,出于某种原因;我不能使用 API 控制器。
<HttpPost> <Route("Data")> Function GetData(ByVal req As Newtonsoft.Json.Linq.JObject) As ActionResult Return Nothing End Function
谢谢!!
【问题讨论】:
-
data: JSON.stringify(json),正在将数据转换为字符串。我建议你删除 dataType: "json", in ajax params
标签: jquery ajax asp.net-mvc json.net asp.net-apicontroller