我正在使用.Net 4.0,目前互联网上的许多解决方案都不起作用,例如不存在的库。
整个故事是:我有一个主视图,其中有1个iframe。通过单击主视图上的[提交]按钮,它将触发自己的POST操作,并使用javascript触发iframe的POST,如下所示:
function TriggerIframeAction() {
var iframe = document.getElementById("myIframe");
var iframeForm = iframe.contentWindow.document.getElementById("myIframeForm");
iframeForm.submit();
}
但是我需要确保主框架的帖子始终在iframe的帖子之前运行,所以我想让主框架的动作触发JS。
我知道Ajax.BeginForm(... OnSuccess ...)可能有所帮助。然而,似乎只是意味着连接成功?如果我将验证码放在主框架的动作和放大器中make ModelState.IsValid = false,“OnSuccess”(所以iframe帖子)仍然会执行,这不是我想要的....
如果我错了,请纠正我。
答案 0 :(得分:1)
<form id="form1" method="POST" action="/controller/action">
</form>
JS:
$(function(){
var form = $('#form1'),
url = form.attr('action'),
formData = form.serialize();
form.submit(function(){
$.post(action, formData, function(result){
if(result)
TriggerIframeAction();
})
return false;
}
});
function TriggerIframeAction() {
var iframe = document.getElementById("myIframe");
var iframeForm = iframe.contentWindow.document.getElementById("myIframeForm");
iframeForm.submit();
}
控制器:
public ActionResult Action(FormCollection collection)
{
// do something
return Json(true);
}