将json传递给MVC控制器并反序列化

时间:2017-03-06 08:44:22

标签: json asp.net-mvc knockout.js model-binding

我有一个VS2015 asp.net MVC(非核心)应用程序。

我有一个剃刀视图,使用javascript从以下函数将数据发布到控制器,使用KonockoutJS绑定到视图上的Button:

self.resubmit = function () {
    var data = { Recs: ko.toJS(this.recs) };

    $.ajax({
        type: "POST",
        url: BASE_URL + 'EditBatch/Resubmit',
        data: ko.toJSON(data),
        contentType: 'application/json',
        async: true,
        success: function (data) {
            window.location = BASE_URL + 'EditBatch/Index';
        },
        error: function (data) {
            toastrs(false);
        }
    });
}

该视图应该允许用户从每个记录中包含的数十个字段中更改四个字段中的数据。仅向用户显示允许更改的字段。我的计划是让控制器从可编辑字段接收数据以及记录中的其余数据 - 然后它将在提交BizTalk处理之前确定要替换的内容。

我有绑定问题!

这里是从视图发送到控制器的数据,来自Fiddler:

fiddler

这是控制器代码:

[HttpPost]
//Called by the Knockout View Model to update db
public void Resubmit(EditBatchViewModel vm)
{
    JavaScriptSerializer jss = new JavaScriptSerializer();
    ABWTransaction abwTran = jss.Deserialize<ABWTransaction>(vm.Recs[0].WholeRecInJson);

    RedirectToAction("Index");
}

视图模型:

public class EditBatchViewModel
{
    public List<VmEditBatch> Recs { get; set; }
    public EditBatchViewModel()
    {
        Recs = new List<VmEditBatch>();
    }
}
public class VmEditBatch
{
    public double Amount { get; set; }
    public string Date { get; set; }
    public string Description { get; set; }
    public string VoucherNo { get; set; }
    public string WholeRecInJson { get; set; }
}

麻烦的是,尽管来自可编辑字段的数据正在到达控制器,但是剩余的数据正在&#34; wholeRecInJson&#34;字段没有被绑定,在控制器操作的第一行放置断点后,可以从VS的我的Locals窗口看到:

locals

我哪里出错了?

0 个答案:

没有答案