フォームを含むポップアップウィンドウがあるとします。フォームを処理するコントローラーが必要です。結果に応じて、このコントローラーはJSON(すべてがうまくいけばポップアップをjavascriptで閉じる)かHTMLを返します(フォームデータが無効でフォームを置き換えなければならない新しいhtmlと - 検証エラーメッセージが表示されます)。それは、フォームの:: は、だから、僕は、このような解決策を見つけたコントローラは結果に応じてJSONまたはHTMLを返すことができます
<form id="message" ...>
...
</form>
そして私は、このフォームのjQueryのハンドラがあります。
$(document).on("submit", "form#message", function (evt) {
evt.preventDefault();
$.ajax({
type: this.method,
url: this.action,
data: $(this).serialize(),
success: function (result) {
if ($.isPlainObject(result)) {
// this is JSON
// close the pop-up window
} else {
// this is HTML
$("form#message").html(result);
}
}
});
});
コントローラー:
[HttpPost]
public ActionResult UpdateMessage(MessageModel model)
{
...
if (.. is valided ..)
return Json(new { success = "OK" });
else
return View(model);
}
質問を - もっとありますそのようなタスクのためのエレガントなソリューション?
をcall.'行うことができます分かりやすくするためにjsonキーの中にhtmlを戻し、エラーキーが設定されているかどうかを確認するだけですか? –
@fliespl、ASP.NET MVCビューをサーバー上の文字列にレンダリングし、それらの部分をJSONにシリアル化するのはちょっとしたPITAです。 –
本当ですか?私が正しく覚えていれば、ちょうど数行で部分的にレンダリングすることができます - おそらくコード内の数字と同じです:) –