1

私は.Net 4.0を使用していますが、現在インターネット上にある多くのソリューションが機能していません。たとえば、存在しないライブラリです。

ストーリー全体は次のとおりです。メイン ビューがあり、その中に iframe が 1 つあります。メイン ビューの [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 に答える