我正在使用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)
答案 0 :(得分:0)
Html并不是为这些事情设计的,一般来说,你是在尝试打破封装。然而,假设您已经知道自己在做什么,这个要求的可能解决方案可能是手动填充javascript对象(用于POST)或查询参数的连接(用于GET)和提交结果。
以下是如何执行此操作的示例:Merge values from two forms on submit