webapp私はモーダルウィンドウでASP MVC Ajaxフォームを使用しています。ASPを含むモーダルウィンドウ閉じるMVC Ajaxフォーム
@Ajax.ActionLink("Open", "Add", "Home", new {id = Model.Id}, new AjaxOptions { HttpMethod = "GET", UpdateTargetId = "modal", OnSuccess = "showModal()"})
は、このコードはdiv要素の中に私のフォーム(部分図)をロードし、モーダルウィンドウとしてそれを開く:私はいくつかだけが(すなわちshowModal()関数)モーダルウィンドウを開くには、任意の特定のjQueryのコードを使用していません。フォームのActionResultを送信する際には、デフォルトのModelStateオブジェクトを使用して検証し、エラーの場合はモデルエラーを含む部分ビューを返します。これは、次の状況を除いて正常に動作します。モデルにエラーがない場合は、モーダルウィンドウを自動クローズします。私は以下を試しました:
@using (Ajax.BeginForm("Save", "Home", new AjaxOptions {HttpMethod = "POST", UpdateTargetId = "modal", OnSuccess = "hideModal(); alert('Saved');"}))
しかし、モデルにエラーがある場合、Ajax呼び出しはまだ有効なので、OnSuccessが呼び出されます。私は部分的なビューでHttpStatusCodeエラーを送信してこれを解決しようとしましたが、divは新しいhtmlで更新されません。 私は唯一の解決策は、モデルにエラーが含まれていない場合、モーダルウィンドウを閉じるjavascriptコードを含む部分的なビューを送信していると思うが、このソリューションは私の意見では非常にきれいではありません。他のアイデア?
おかげで病気それを試してみます!参考までに、JavaScriptコードをインラインで入れていることにお気づきになりましたか? UnobtrusiveがオンになっているときにChromeでOnSuccessが機能しないのですか?関数名を使用して修正することができます。 – Marthijn
私はより多くのブラウザテストを行う必要がありますが、今は上記のコードはMVC3を使ってChrome 14、IE9、FF7で動作します。私はインラインのコードがコールバックのMVC2で壊れていたが、MVC3で修正されたというSOの質問を見ました。 –
インラインコードの代わりに関数名を使用するようにコードを更新しました。私はモーダルを複数のページで使用しなければならず、それをドライ状態にしておきたい –