繁体   English   中英

将数组和表单数据发布到控制器-MVC Ajax

[英]Posting Array and Form Data to Controller - MVC Ajax

我在jQuery中有一个对象数组:

function customersList() {
    this.selectedCustomers = [];
}

function customerObject(customerId, bookingId) {
    this.customerId = customerId;
    this.bookingId = bookingId;
}

我需要将其发布到我的控制器:

[HttpPost]
public ActionResult CreateMultipleCasesFormPost(CreateMultipleCasesModel model)
{
    return PartialView("_CreateMultipleCases", model);
 }

我的ViewModel:

public class CreateMultipleCasesModel
{
    [Display(Name = "Selected Customers")]
    public List<CustomerList> Customers { get; set; }

我需要将jQuery的数组和该表单的数据传递给我的控制器(我的视图模型包含其他属性):

$('#createMultipleCasesForm')

这是我的Post Form jQuery代码:

$('#createMultipleCasesBtn').click(function () {
            var btn = $(this);
            var mUrl = btn.data('actionurl');

            var formModel = $('#createMultipleCasesForm').serializeArray();
            var customerList = customersList.selectedCustomers();

            var requestData = {
                model: formModel,
                Customers: customerList
            };

            var sData = JSON.stringify(requestData);

            $.ajax({
                url: mUrl,
                type: 'POST',
                dataType: 'json',
                contentType: 'application/json; charset=utf-8',
                data: sData,
                success: function (response) {

                    debugger;

                },
                error: function (response) {
                    $('#ErrorMessage').html('<span class="icon black cross"></span>' + response.Message);
                }
            });

        });

我来自jQuery的模型未绑定客户对象数组或表单,我在这里做错了什么?

编辑

当我发回表格时会发生什么: 我在模型中的客户数组为NULL,我表单中的所有其他字段也不回发

我找到了一个解决方案,它对我有用:

$('#createMultipleCasesBtn').click(function () {
        var btn = $(this);
        var mUrl = btn.data('actionurl');

        var formModel = $('#createMultipleCasesForm').serializeObject();

        formModel['Customers'] = customersList.selectedCustomers;

        var sData = JSON.stringify(formModel);

        $.ajax({
            url: mUrl,
            type: 'POST',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            data: sData,
            success: function (response) {

            },
            error: function (response) {
                $('#ErrorMessage').html('<span class="icon black cross"></span>' + response.Message);
            }
        });

    });

下面的函数来自于此的答案: 使用jQuery将表单数据转换为JavaScript对象

$.fn.serializeObject = function () {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function () {
            if (o[this.name] !== undefined) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM