Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC中的jQueryUI模式对话框_Asp.net Mvc_Jquery Ui_Jquery Ui Dialog - Fatal编程技术网

Asp.net mvc MVC中的jQueryUI模式对话框

Asp.net mvc MVC中的jQueryUI模式对话框,asp.net-mvc,jquery-ui,jquery-ui-dialog,Asp.net Mvc,Jquery Ui,Jquery Ui Dialog,请原谅我提出了一个过于简单的问题,但我很难理解这个问题。我有一个包含以下内容的视图(.cshtml)(根据此): 登录 用户名: @Html.TextBox(“用户名”) 密码: @密码(“密码”) $(函数(){ $(“#dlgLogin”)。对话框({ 莫代尔:是的, 自动打开:对, 可调整大小:false, 按钮:{ 登录:函数(){ //执行登录 $.post(“@Url.Action”(“登录”、“主页”)”, { 用户名:$('#用户名').val(), 密码:$('#passwo

请原谅我提出了一个过于简单的问题,但我很难理解这个问题。我有一个包含以下内容的视图(.cshtml)(根据此):


登录
用户名:
@Html.TextBox(“用户名”)
密码:
@密码(“密码”)
$(函数(){
$(“#dlgLogin”)。对话框({
莫代尔:是的,
自动打开:对,
可调整大小:false,
按钮:{
登录:函数(){
//执行登录
$.post(“@Url.Action”(“登录”、“主页”)”,
{
用户名:$('#用户名').val(),
密码:$('#password').val()
},
功能(数据、状态、xhr){
if(data.Success){
警惕(“伟大”);//做点什么
$('dlgLogin')。对话框(“关闭”);
$('divLoginButton').load(@Url.Action(“GetLoginButton”,“Home”);
}否则{
//做点别的
}
});
},
取消:函数(){
$(此).dialog(“关闭”);
}
}
});
});
基本上,每次打开视图时,它都会加载到jQueryUI对话框中,也就是说,视图本身负责将自己的内容放在jQueryUI对话框中。我这样做是为了覆盖登录时的
onauthorzization()
事件,并在需要用户登录时将其重定向到弹出窗口。我有3个问题:

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

2.我如何将
成功事件附加到上面的表单帖子中并进行处理?i、 e.当表单发回
主控制器的
登录
操作时

3.在MVC中显示对话框的方法至少有3到4种。正确的方法是什么?我在上面发布的方法是否被认为是良好的/mvc友好实践,如果不是,您推荐什么

1当表单发回服务器时,如何显示加载动画(a.gif)

看看:


$(“#加载程序”).bind(“ajaxSend”,函数(){
$(this.show();
}).bind(“ajaxStop”,函数(){
$(this.hide();
}).bind(“ajaxError”,函数(){
$(this.hide();
});
2我将如何将成功事件附加和处理到上面的表单帖子中

我不明白你在问什么。您在示例代码中附加了一个匿名函数来处理发送到服务器的帖子

我见过至少3到4种在MVC中显示对话框的不同方法。正确的方法是什么

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

Yep,
ajaxSend
是我想要的,谢谢。是的,你是对的,我发布的示例本身处理回调,所以我的第二个问题是胡说八道(我在凌晨4点发布了这个)。你能和我谈谈吗?我真的很喜欢它显示对话框的方式,允许您在父页面上做一些事情(在本例中显示类似twitter的消息)。是的,这基本上是我建议的第二种方法:将内容作为部分视图加载到对话框中。与母版页的交互是通过将JSONResult返回到编辑/发布操作并修改一些javascript来完成的。
<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>
<div id="loader"></div>

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