MVC 4 - 使用jQuery将多个表单传递给View Action

时间:2014-07-21 11:18:02

标签: jquery asp.net-mvc-4

我正在使用MVC 4.0开发Web应用程序,

在View中,我渲染了2个不同的部分视图。每个部分视图都放在不同的Form标签内。 (我的要求需要不同的表格)

一个局部视图包含一个按钮控件。单击此按钮,需要将2个不同的部分视图值发送到Controller Action。所以我必须序列化我的2个不同的表单并将这些值发送给Controller Action。

如何使用jQuery向Controller动作发送2个不同的表单值?

jQuery的:

$('#btnAdd').click(function (e) {
            var currentForm = $("#divId1").find('form');
            var mainForm = $("#divId2").find('form');
            $.post("{Area}/{Controller}/ProcessData",{ inputData : currentForm.serialize(), availableData: mainForm.serialize()}, function (data) {
                $('#divId2').empty();
                $('#divId2').append(data);
            });
        });

控制器操作:

public ActionResult ProcessData(FormCollection inputData, FormCollection availableData)

我无法在控制器操作中获取值。

答案: 我使用ajax POST和数据连接来实现它。

jQuery的:

var currentFormData = currentForm.serialize();
        var mainFormData = mainForm.serialize();

        $.ajax({ type: "POST", url: "{Area}/{Controller}/ProcessData", data: currentFormData + "&" + mainFormData, cache: false }).done(function (html) {
            $("#divId2").empty();
            $("#divId2").append(html);
        });

动作:

public ActionResult ProcessData(FormCollection inputData, CustomModel availableData)

1 个答案:

答案 0 :(得分:0)

Html并不是为这些事情设计的,一般来说,你是在尝试打破封装。然而,假设您已经知道自己在做什么,这个要求的可能解决方案可能是手动填充javascript对象(用于POST)或查询参数的连接(用于GET)和提交结果。

以下是如何执行此操作的示例:Merge values from two forms on submit