从视图提交一个表单时,如何在同一页面中读取或让控制器以另一种形式读取数据?
答案 0 :(得分:10)
当您使用浏览器提交表单时,它只会为该< form>< / form>中的字段发送数据。无论您使用的是哪种后端技术,无论是ASP.net,MVC.net,PHP,Python等,都是如此。
我能想到的唯一两个选择是:
当然,每个人都有利有弊,但这就是野兽的本性。
答案 1 :(得分:2)
您可以使用Ajax和Javascript的组合在客户端执行此操作...
<SCRIPT language="JavaScript">
function submitforms()
{
new Ajax.Request(formUrl,
{
parameters: $H({param1:value,param2:value}).toQueryString(),
method: 'post',
onSuccess: function(transport) {
document.myform.submit();
}
}
}
</SCRIPT>
答案 2 :(得分:1)
你做不到。如果您有要提交的页面的信息,则必须将其与提交的表单一起包含在内。但是,您可以使用JavaScript在提交时将信息从一个表单复制到下一个表单。
答案 3 :(得分:0)
var formData1 = $("#form1").serializeObject();
var formData2 = $("#form2").serializeObject();
$.extend(formData1, formData2);
var formData = JSON.stringify(formData1);
$.ajax({
type: "POST",
url: "@Url.Action("MyAction", "MyController")",
data: formData,
dataType: "json",
contentType: 'application/json; charset=utf-8',
success: function (data) {
...Do something with the data
},
error: function(result) {
...Handle the error
}
});
然后在你的控制器端(我使用MVC,但WebAPI可能会工作相同)你可以声明两个独立的参数,与你的客户端模型匹配,一切都将为你整理,假设你没有重叠的属性名称!当魔法发生时,一定要喜欢它!
public ActionResult MyAction(FormDataModel1 formData1, FormDataModel2 formData2)
感谢https://github.com/macek/jquery-serialize-object获取serializeObject代码。