我通过JQuery向MVC HttpPost操作方法发送一个值,但它获取的是null值。当我发送一个普通字符串时,它工作正常,但是当我发送一个数组时,它获得空值。这是代码。
发送值的代码
function Submit() {
var QSTR = {
name: "Jhon Smith",
Address: "123 main st.",
OtherData: []
};
QSTR.OtherData.push('Value 1');
QSTR.OtherData.push('Value 2');
$.ajax({
type: 'POST',
url: '/Omni/DoRoutine',
data: JSON.stringify({ obj: 'Reynor here!' }),
// this acctually works
// and at the action method I get the object[]
// with object[0] = 'Reynor here!'
// but when I use the object I really need to send I get null
data: JSON.stringify({ obj: QSTR }), //I get null
contentType: 'application/json; charset=utf-8',
dataType: "json",
success: function (msg) {
alert('ok');
},
error: function (xhr, status) {
alert(status);
}
});
}
这是动作方法代码:
[HttpPost]
public ActionResult DoRoutine(object[] obj)
{
return Json(null);
}
这是什么解决方案,为什么会发生这种情况? 感谢
答案 0 :(得分:0)
QSTR是一种复杂类型,因此您需要在post方法中使用复杂数据。
public class QSTR
{
public string name { get; set; }
public string Address { get; set; }
public object[] OtherData { get; set; }
}
[HttpPost]
public ActionResult DoRoutine(QSTR obj)
{
return Json(null);
}
但是如果你只想收到其他数据的数组,你应该只在你的ajax中发送:
$.ajax({
data: JSON.stringify({ obj: QSTR.OtherData }),
// other properties
});