我将json数据传递给简单控制器(MVC控制器)的动作方法。以下是供参考的示例代码。
JS代码:
VAR JSON = {IsInit:真,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');
}
});
操作方法:现在
Function GetData(ByVal IsInit As Boolean, ByVal SearchParam As Newtonsoft.Json.Linq.JObject) As ActionResult
Return Nothing
End Function
,以上动作完全不来电。但是如果你使用下面的代码,那么它会调用,但SearchParam只是[object]类型,你不能使用任何searchParam对象的值。
Public Function GetData(ByVal IsInit As Boolean, ByVal SearchParam As Object) As Object
Return Nothing
End Function
我认为它不能在POST请求中传递多个参数与复杂的json对象。
如何获取传递给MVC控制器的操作方法的JSON数据,以便SearchParam Json数据转换为JObject它自己。即应该使用初始的第一个Action方法签名,而不使用任何主要的方法签名更改。
很少观察:
如果我接通上述操作方法作为API控制器API;它开始工作,但说你需要按照下面的方法签名。下面的方法不适用于MVC控制器。不知道为什么?但是,由于某种原因,我不能使用API控制器。
Function GetData(ByVal req As Newtonsoft.Json.Linq.JObject) As ActionResult
Return Nothing
End Function
谢谢!
+0
数据:JSON.stringify(json),正在将数据转换为字符串。我建议你删除dataType:“json”,在阿贾克斯params –