javascript - 如何在 Controller 操作方法中运行/触发 javascript?

标签 javascript jquery asp.net-mvc-3

我使用的是.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...) 可能会有所帮助。不过这似乎只是意味着连接成功?如果我将验证代码放入主框架的操作中并使 ModelState.IsValid = false,“OnSuccess”(因此 iframe post)仍将被执行,这不是我想要的......

如果我错了,请纠正我。

最佳答案

<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();
}

Controller :

public ActionResult Action(FormCollection collection)
{
    // do something
    return Json(true);
}

关于javascript - 如何在 Controller 操作方法中运行/触发 javascript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13241474/

相关文章:

javascript - jQuery 复选框错误

javascript - 如何使用underscore 的chain 方法返回多维数组中的第一项?

javascript - 如何使用 jQuery find() 更改 css?

javascript - 如何从 $(this) 中删除下一个元素?

c# - ASP.NET MVC3 : How to return raw html to view?

c# - 将两个查询合并为一个查询

javascript - 输入的值即使不符合要求也被发送

javascript - React 通过 child 变量包含多个 Prop ?

asp.net-mvc - 从 ajax POST 接收参数在 Controller 中为空 + 在 firebug MVC 4 中传递参数

jquery - 验证至少一个复选框