MVC [HttpPost]方法接收空参数

时间:2014-09-26 19:45:24

标签: javascript jquery asp.net-mvc

我通过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);
        }

这是什么解决方案,为什么会发生这种情况? 感谢

1 个答案:

答案 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
 });