2

単純な質問で申し訳ありませんが、私はこれを理解するのに苦労しました。次の内容のビュー (.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 に適したプラクティスと見なされますか? そうでない場合、何をお勧めしますか?

4

1 に答える 1

1

1 フォームがサーバーにポストバックされたときに、読み込み中のアニメーション (.gif) を表示するにはどうすればよいですか?

ajaxSendを見てください:

<div id="loader"></div>

$("#loader").bind("ajaxSend", function () {
    $(this).show();
}).bind("ajaxStop", function () {
    $(this).hide();
}).bind("ajaxError", function () {
    $(this).hide();
});

2 上記のフォーム投稿に成功イベントを添付して処理するにはどうすればよいですか?

あなたが何を求めているのか理解できません。サンプル コードで、サーバーへの投稿を処理する匿名関数をアタッチしました。

3 MVC でダイアログを表示するための少なくとも 3 つまたは 4 つの異なるアプローチを見てきました。これを行う正しい方法は何ですか?

ダイアログを表示する最良の方法はありません。ページでダイアログのコンテンツをロードすることで示したアプローチを使用できますが、ダイアログに astyle="display: none;"を追加しますdiv。もう 1 つの方法は、ダイアログを開くときに部分ビューから ajax を使用してダイアログ コンテンツを読み込むことです。

于 2012-11-23T08:57:31.340 に答える