【问题标题】:Post More Than One Serialize Forms In One Ajax to Controller C#?在一个 Ajax 中将多个序列化表单发布到控制器 C#?
【发布时间】:2019-12-23 09:15:32
【问题描述】:

我有 2 个表单,我想一次使用序列化概念发布到控制器。是否可以将一个 ajax 中的一个序列化表单发送到控制器? 如果是,我该怎么做?

这是我的 ajax/javascript:

    $('#btnSave').click(function () {
        debugger;
        var vDataHead = $('#frmHeader').serialize();
        var vDataDet = $('#frmDetail').serialize();


        if ($("#txtCompanyID").val() == "" || $("#txtBranchID").val() == "" || $("#txtUserID").val() == "")
        {
            debugger;
            Swal.fire('Error!', 'Please Fill All Fields to Save Budget Setting!', 'error');
        }
        else
        {
            debugger;
            $.ajax({
                url: '/MappingUserItemGroup/SaveData',
                data: { dataHead: vDataHead, dataDet: vDataDet },
                method: 'POST',
                success: function (mdl)
                {
                    debugger;
                    if (mdl == "Exist")
                    {
                        debugger;
                        Swal.fire('Error!', 'Setting Mapping User Item Group Already Exist ', 'error');
                    }
                    else if (mdl == "Berhasil")
                    {
                        debugger;
                        Swal.fire('Success', 'Setting Mapping User Item Group Was Successfully Saved!', 'success').then(() => { loadTable();});
                    }
                    else if (mdl == "Gagal")
                    {
                        debugger;
                        Swal.fire('Error!', 'Setting Mapping User Item Group Failed To Be Saved!', 'error');
                    }
                },
                error: function (mdl)
                {
                    debugger;
                }
            });
        }
    });

这是我的控制器:

public ActionResult SaveData(MapingUIGH dataHead, List<MapingUIGD> dataDet)
    {
        //do something here with that data serialize

    }

【问题讨论】:

  • 如果您想将 2 个表单提交到相同的方法,那么为什么不能将 2 个表单合并为一个表单?
  • @HamzaHaider 不,这对我没有帮助,因为我没有使用本地存储,但感谢您的帮助
  • @RajeshG 是的,如果我愿意,它可以,但我只是想知道它是否应该是 2 形式而不能是 1 形式,这就是为什么我问它是否可能,以及它是否可能。跨度>

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


【解决方案1】:

您将两个表单值作为对象传递,因此在服务器端创建一个与该对象匹配的视图模型

public class MappingViewModel
{
    public MapingUIGH DataHead { get; set; }
    public List<MapingUIGD> DataDet { get; set; }
}

并将其用作操作方法的参数,因此从 UI 发布的数据格式与参数匹配

public ActionResult SaveData(MappingViewModel viewModel)

【讨论】:

  • 那么如何获取datadet中的数据列表呢?以及它如何变成javascript?对不起,我还是新手,所以我有点困惑,你能告诉我更多吗?
  • 这是完全不同的问题,即使您没有提到 MapingUIGD 的属性是什么,或者如果您在表单 @987654324 中正确绑定列表,您如何在表单中绑定它@ 应该适合你。
  • 对不起,我的意思是,当我这样使用你的类时,如何在 ajax 中填充 viewModel,如果使用 1 个序列化,我只是调用类并调用包含表单序列化的变量,例如 var vData = $('#frmDetail').serialize() 和在 ajax data : vData 但如果使用你的我不知道如何。这就是为什么我要求你详细说明
  • 如果您正确获取表单值,data: { dataHead: vDataHead, dataDet: vDataDet } 将正确绑定参数,UI 端无需更改。
  • 绑定数据是正确的,但是当我调试控制器时,数据为空。还有什么我需要改变的吗?
猜你喜欢
  • 2015-02-14
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 2014-05-22
  • 2022-01-22
  • 2012-09-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多