通过ajax和其他简单类型

时间:2016-05-10 13:06:19

标签: ajax asp.net-mvc asp.net-ajax

我知道这个问题已被问了一百次,但我无法弄明白。

我有一个类似

的ajax调用
function saveBox()
{
    var postModel = createBoxPostModel();

    showLoader();
    $.ajax({
        async: true,
        type: 'post',
        url: '@(Url.BuildAction<IncomingGoodsVerificationController>(x => x.SaveWorkUnitForBox(null, null, null)))',
        data: { jsonPostModel: postModel, boxItemKey: boxItemKey, itemKey: itemKey },

        success: function (data, status) {
            ...
        },
        error: function (jqXHR, textStatus, errorThrown) {
            hideLoader();
            displayErrorMessagePopup('Error in saving box! ', errorThrown, 'error-msgs');
        }
    });
}

和控制器方法类似

[HttpPost]
public JsonResult SaveWorkUnitForBox(NewWorkUnitBoxModel postModel, string boxItemKey, string itemKey)
{
    ....
}

NewWorkUnitBoxModel

public class NewWorkUnitBoxModel
{
    public NewWorkUnitBoxModel();

    public string AlternativeWorkUnitNumer { get; set; }
    public string Barcode { get; set; }
    public int ChooseType { get; set; }
    public decimal? GrossWeight { get; set; }
    public long IdCompany { get; set; }
    public long? IdPackagingType { get; set; }
    public long? IdWorkUnitSubType { get; set; }
    public decimal? NetWeight { get; set; }
    public string Tone { get; set; }
    public decimal? Volume { get; set; }
    public long? WorkUnitNumber2 { get; set; }
}

但是当调用控制器动作时为null或者对象的每个属性都没有值。

我试过几种方法:

  • data: { jsonPostModel: postModel, boxItemKey: boxItemKey, itemKey: itemKey }

  • data: { jsonPostModel: JSON.stringify(postModel), boxItemKey: boxItemKey, itemKey: itemKey }

  • 将所有操作参数放入请求

这些都没有奏效。客户端模型正确加载,并且使用ModelBinders我也查看了HtmlRequest内部,数据已经到达服务器。我只解决了将类型更改为字符串并在操作中反序列化的问题。

如何让它自动反序列化模型?

0 个答案:

没有答案