0

这非常令人沮丧,我查看了许多示例,但仍然无法在服务器上接收任何数据。我有以下JS

var checkoutModel = { };
$('form#card input').each(function () {
           var id = $(this).attr("id")
           var value = $(this).val();
           checkoutModel[id] = value;
});

                    $.ajax({
                        url: "/checkout",
                        type: 'post',
                        dataType: 'json',
                        data: JSON.stringify(checkoutModel),
                        contenttype: 'application/json; charset=utf-8',
                        error: function (xhr) {
                            alert("error: " + xhr);
                        },
                        success: function (data) {
                            alert(data);
                        }
                    });

CheckoutController 的操作如下所示(/checkout 映射到 Checkout/OrderInfo)

    [HttpPost]
    [Authorize]
    public virtual JsonResult OrderInfo(CheckoutModel checkoutModel)

但在服务器上,我的 checkoutModel 的属性始终为 NULL。

任何想法我哪里出错了?

谢谢

4

1 回答 1

0

我在下面使用这样的东西:

假设您的 CheckoutModel 具有类似的 Id 和 Value 属性

public Int32 Id {get;set}
public string Value {get;set}

在你的 ajax 上

var checkoutModel = { };
checkoutModel.Id = 1234;
checkoutModel.Value = "This is a Value";

    $.ajax({
    type: "POST",
    url: "Your Controller URL",
    data: checkoutModel ,
    traditional: true,
    success: function (data) {
               alert(data);
    },
    error: function (xhr) {
     alert("error: " + xhr);
    },
    dataType: 'json'
});

然后你的控制器

public JsonResult OrderInfo(CheckoutModel checkoutModel)
{
// int id = checkoutModel.Id; result : 1234
// string value = checkoutModel.Value; result : "This is a Value"
}

最好的祝福

于 2013-04-04T02:25:26.983 回答