1

我正在使用 .Net 4.0,目前 Internet 上的许多解决方案都不起作用,例如不存在的库。

整个故事是:我有一个主视图,其中有 1 个 iframe。通过单击主视图上的 [submit] 按钮,它将触发自己的 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...) 可能会有所帮助。然而,这似乎只是意味着连接成功?如果我将验证代码放在主框架的操作中并设置 ModelState.IsValid = false,“OnSuccess”(因此 iframe 帖子)仍将被执行,这不是我想要的......

如果我错了,请纠正我。

4

1 回答 1

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);
}
于 2012-11-06T06:42:36.597 回答