2

MVC ビューで ajax.ActionLink を作成しましたが、ターゲット div を応答で埋めるのではなく、応答で上書きしていますが、これは意味がありません。この記事は、親をオーバーライドすることは想定されておらず、子のみをオーバーライドすることになっていると述べていますhttp://aspnet.codeplex.com/workitem/8767

リンクは次のとおりです。

@Ajax.ActionLink(domain.Domain, "Edit_Partial", "DomainNames", new { id = domain.DomainNameId }, new AjaxOptions { HttpMethod = "get", OnSuccess = "doAsyncCallBack()", UpdateTargetId = "editDomainTarget" })

ロード前の div は次のとおりです。

<div class="modal-body" id="editDomainModalBody">
<div id="editDomainTarget">Load body…&lt;/div>
</div>

ロード後の Div は次のとおりです。

<div class="modal-body" id="editDomainModalBody">
<p>New Content</p>
</div>

これは設計上悪いことです。ターゲットを更新してからもう一度やり直したい場合、ターゲットは DOM に存在しません。jQuery ajax はこのようには機能しません。誰でもこれを修正できますか?ありがとう!

プロットが厚くなります!

ajax はターゲット div の上に読み込まれるので、コントローラーが返すコンテンツを同じ div でラップすることにしました。つまり、往復で DOM に返されます。何が起こるか見てみましょう:

<div class="modal-body" id="editDomainModalBody">
    <div id="editDomainTarget">
        <div id="editDomainTarget">Load body…&lt;/div>
    </div>
</div>

グッドグレイフ!誰か?

4

1 に答える 1

1

問題は解決しましたが、原因がよくわかりません。気づかなかった場合 (または私が適切に説明しなかった場合)、データは div にロードされ、同時に twitter ブートストラップ コードによって処理され、モーダル ウィンドウに表示されていました。これを処理するために、twitter data- (データ ダッシュ) 属性を使用していました。jquery ajax と Twitter のブートストラップ コードの間で奇妙な競合状態が発生したか、data - 属性と何らかの競合が発生したようです。

修正は、ajax データを同じ div にロードすることですが、提供された onComplete または onSuccess コールバックからモーダル ウィンドウを起動することです。

幸いなことに、Twitter ブートストラップは、モーダル ウィンドウを起動するための単純な JavaScript 呼び出しを提供します。

$('#yourModal').modal('show');

于 2013-03-28T09:08:15.377 に答える