2

大家好,我正在使用 jquery ajax 将一些数据发布到控制器,但我在控制器中得到空值,

jQuery代码是:

$('#registerCompOff').click(function() {

    var compOff = [];
    $('div').each(function() {
        var curRow = {};
        curRow.Description = $(this).find('.reason').val();
        curRow.CompOffDate = $(this).find('.datefieldWithWeekends').val();
        if (curRow.Description != null && curRow.CompOffDate != null) {
            compOff.push(curRow);
        }
    });
    $.ajax({
        type: 'POST',
        url: this.href,
        dataType: 'json',
        data: compOff

    });

    return $('form').valid();

});​

compOff不为空我已经检查过...

控制器是:

 [HttpPost]
        public ActionResult RegisterCompOff(RegisterCompOff[] registerCompOff)
        {

            //return View();
        }

你能告诉我哪里出错了吗?

4

3 回答 3

3

给定您的原始代码,更改$.ajax ->data: JSON.stringify(compOff)然后添加contentType: "application/json; charset=utf-8"并最后将控制器操作的参数名称更改为public ActionResult RegisterCompOff(RegisterCompOff[] compOff).
模型绑定应该开始。它对我有用。

于 2012-06-25T12:06:42.877 回答
1

编辑:

尝试这个 :

 $.ajax({
        type: 'POST',
        url: this.href,
        dataType: 'json',
        traditional: true,
        data: 
        {
             CompOffList: compOff 
        }
    });

并像这样更改您的控制器:

[HttpPost]
        public ActionResult RegisterCompOff(List<RegisterCompOff> CompOffList)
        {

            //return View();
        }

希望这可以帮助

于 2012-06-22T08:31:13.343 回答
0

您的 r 将 javascript 对象作为数据传递,而 jquery ajax 方法需要一个键/值对列表。尝试这个

data:{Description:compOff.Description, CompOffDate:compOff.CompOffDate}
于 2012-06-22T08:26:22.897 回答