単純な質問で申し訳ありませんが、私はこれを理解するのに苦労しました。次の内容のビュー (.cshtml) があります (このサンプルごと):
<div id='dlgLogin'>
<h1>Log in</h1>
<table>
<tr>
<td>Username:</td>
<td>@Html.TextBox("username")</td>
</tr>
<tr>
<td>Password:</td>
<td>@Html.Password("password")</td>
</tr>
</table>
</div>
<script type="text/javascript">
$(function () {
$("#dlgLogin").dialog({
modal: true,
autoOpen: true,
resizable: false,
buttons: {
Login: function () {
// perform login
$.post("@Url.Action("Login", "Home")",
{
username: $('#username').val(),
password: $('#password').val()
},
function( data, status, xhr ) {
if(data.Success){
alert('great'); // do something
$('#dlgLogin').dialog("close");
$('#divLoginButton').load("@Url.Action("GetLoginButton", "Home")");
} else {
// do something else
}
});
},
Cancel: function () {
$(this).dialog("close");
}
}
});
});
</script>
基本的に、View は、開かれるたびに常に jQuery UI ダイアログにロードされます。つまり、View 自体の責任で、独自のコンテンツを jQuery UI ダイアログ内に配置します。ログインのイベントを上書きしOnAuthorzation()
、ログインが必要なときにユーザーをポップアップにリダイレクトできるように、これを行いました.3つの質問があります:
1.フォームがサーバーにポストされたときに、ロード アニメーション (.gif) を表示するにはどうすればよいですか? このアプローチで?Ajax.BeginForm
を使用した場合、ポストバック中にアニメーションをロードする領域として使用されるを指定できたことは承知してUpdateTargetId
いますが、このアプローチでその効果をどのように達成できますか?
2.success
上記のフォーム投稿にイベントを添付して処理するにはどうすればよいですか? つまり、フォームがコントローラーのLogin
アクションにポストバックされたとき。Home
3. MVC でダイアログを表示するための少なくとも 3 つまたは 4 つの異なるアプローチを見てきました。これを行う正しい方法は何ですか?上記で投稿したアプローチは、良い/ mvc に適したプラクティスと見なされますか? そうでない場合、何をお勧めしますか?