Asp.net mvc MVC中的jQueryUI模式对话框
请原谅我提出了一个过于简单的问题,但我很难理解这个问题。我有一个包含以下内容的视图(.cshtml)(根据此):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
登录
用户名:
@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();
});