JQUERY ajax将空值从MVC View传递给Controller

时间:2012-06-22 08:20:01

标签: asp.net-mvc jquery

嗨伙计们我正在使用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();
        }
你能告诉我哪里出错了吗?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

<强>编辑:

试试这个:

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

并按照以下方式更改您的控制器:

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

            //return View();
        }

希望这会有所帮助

答案 2 :(得分:0)

你的j传递javascript对象作为数据,其中jquery ajax方法需要一个键/值对列表。 试试这个

data:{Description:compOff.Description, CompOffDate:compOff.CompOffDate}