请原谅我这个简单化的问题,但我很难理解这个问题。我有一个View(.cshtml),其中包含以下内容(按此sample):
<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. 我看到至少有3种或4种不同的方法在MVC中显示对话框。这样做的正确方法是什么?我上面发布的方法是否被认为是良好/ mvc友好的做法,如果不是你推荐的是什么?
答案 0 :(得分: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的对话框内容。