【问题标题】:Append list of data object to serialized form将数据对象列表附加到序列化表单
【发布时间】:2016-08-03 13:28:50
【问题描述】:

我想用序列化表单数据映射数据对象列表,我的后端是.Net,我有一个模型类来映射参数

这是我的 jQuery 对象

var MultiAssignGarageCampaign = [];

    var obj = {};

    obj.GarageID = 15;
    obj.CampaignID = 8;

    MultiAssignGarageCampaign.push(obj);

这是我的ajax请求

var data = {
  'MultiAssignGarageCampaign' : MultiAssignGarageCampaign
};

data = $form.serialize() + '&' + $.param(data);

$.ajax({
    type: 'post',
    url: '/Booking/Create',
    data: data ,         
    dataType: 'json'

}).done(function () {
    $(this).addClass("done");
});

这是我的后端模型

public class BookingViewModel
    {

public IList<GeneralCampaign> MultiAssignGarageCampaign { get; set; } 

}

当我像这样对查询进行硬编码时,它可以工作

//data = $("#frmCreateBooking").serialize() + '&MultiAssignGarageCampaign[0].GarageID=15&MultiAssignGarageCampaign[0].CampaignID=8';

【问题讨论】:

  • 你不是也需要序列化MultiAssignGarageCampaign吗?
  • 您的对象必须采用特殊格式。 If the object passed is in an Array, it must be an array of objects in the format returned by .serializeArray()。检查它here
  • 您的服务器操作方法参数如何?你的表格是什么?
  • 你需要uriencoded数据吗?您的表单与工作选择器中指向的表单相同吗?有什么问题?

标签: c# jquery ajax asp.net-mvc serialization


【解决方案1】:

只是猜测,但您正在重复数据两次:

  1. 首先使用jQuery param
  2. 第二次使用jQuery ajax

我认为通过解码从 jQuery param 获得的序列化数据可以正常工作,例如:

data = $form.serialize() + '&' + decodeURIComponent($.param(data));

【讨论】:

  • 它从后端创建对象列表,但数据没有与对象映射:(问题是它创建了像这样的参数 MultiAssignGarageCampaign[0][GarageID]=44& 它应该是 MultiAssignGarageCampaign[ 0].[GarageID]=44& 映射数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-26
  • 2020-12-19
  • 1970-01-01
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 2021-12-10
相关资源
最近更新 更多