通过$ .ajax发送的Backend POST方法中未收到对象

时间:2014-08-29 13:36:05

标签: c# jquery asp.net-mvc asynchronous

问题是我通过$ 4.ajax将正确格式的对象数组发送到MVC中的POST方法,但是在后端它没有按预期接收。如果我发送一个包含3个对象的数组,则表明后端对象是作为3个对象的List接收的,但这些对象中的属性未正确加载。事实上,没有任何值被复制。

以下是相关的javascript代码

        var array = new Array();

        for (var i = 0 ; i < $('.TourCommission:enabled').length; i++)
        {
            var data = {
                TourCodeID: parseInt($('.TourCommission:enabled').eq(i).parent().prev().html()),
                Commission: parseFloat($('.TourCommission:enabled').eq(i).val())
            };
            array.push(data);
        }

        $.ajax({
            url: '/Booking/submitAgentTourCommissions',
            data: JSON.stringify(array),
            type: "POST",
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                $('form').submit();
            },
            error: function () {
                return true;
            }
        });

这是后端代码

[HttpPost]
public JsonResult submitAgentTourCommissions(List<AgentTourCommission> obj) {
    return Json(true);
}

AgentTourCommission类如下

public class AgentTourCommission
{
    public int UserID;
    public string UserName;
    public int TourCodeID;
    public string TourCodeName;
    public float Commission;
}

Javascript Watch的截图

enter image description here

BackEnd Watch的截图

enter image description here

1 个答案:

答案 0 :(得分:2)

您需要像这样添加get set

    public class AgentTourCommission
    {
        public int UserID { get; set; }
        public string UserName { get; set; }
        public int TourCodeID { get; set; }
        public string TourCodeName { get; set; }
        public float Commission { get; set; }
    }

我希望你能帮忙!