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>

基本上,无论何时打开,视图都会始终加载到 jQuery UI 对话框中,也就是说,视图本身负责将自己的内容放置在 jQuery UI 对话框中。我这样做是为了覆盖OnAuthorzation()我的登录事件,并在用户需要登录时将其重定向到弹出窗口。我有 3 个问题:

1.当表单回传到服务器时,如何显示加载动画(.gif)?用这种方法?我知道如果我使用 anAjax.BeginForm我可以指定一个UpdateTargetId在回发期间用作加载动画的区域,但是我将如何使用这种方法实现这种效果?

2.我如何将success事件附加和处理到上面的表单帖子?即当表单被回发到控制器的Login动作时。Home

3.我已经看到至少 3 或 4 种不同的方法在 MVC 中显示对话框。这样做的正确方法是什么?我在上面发布的方法是否被认为是好的/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 我已经看到至少 3 或 4 种不同的方法在 MVC 中显示对话框。这样做的正确方法是什么?

没有显示对话框的最佳方式。您可以使用您展示的方法与页面一起加载对话框内容,但我会style="display: none;"在对话框中添加一个div。另一种方法是在打开对话框时从部分视图中加载带有 ajax 的对话框内容。

于 2012-11-23T08:57:31.340 回答