對不起,我想了解一個簡單的問題,但是我很難理解這一點。我有以下內容(每本sample)視圖(.cshtml):MVC中的jQuery UI模式對話框
<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用戶界面對話框加載每當它打開,也就是說,它的景觀本身的責任將其自己的內容放置在jQuery UI對話框中。我已經做到了這一點,這樣我可以覆蓋OnAuthorzation()
事件的我的登錄和用戶重定向到一個彈出時被要求他們登錄我有3個問題:
我將如何顯示一個加載動畫(一個.gif)當表單被髮回服務器時?採用這種方法?我知道,如果我使用了Ajax.BeginForm
,我可能指定了UpdateTargetId
,這將在回發期間用作加載動畫的區域,但是如何使用此方法實現該效果?
2.我將如何附加並處理success
事件到上面的表單郵件?即當表格被重新發送到Home
控制器的Login
動作。
3.我已經看到至少有3種或4種不同的方法來在MVC中顯示對話框。什麼是正確的方法來做到這一點?我上面發佈的方法是否被認爲是良好的/ mvc友好的練習,如果不是,你推薦什麼?
是的,'ajaxSend'就是我要找的,謝謝。是的,你是對的,我發佈的樣本處理回調本身,所以我的第二個問題是廢話(我在凌晨4點發布)。你可以[看看這個](http://ricardocovo.com/2012/04/06/asp-mvc3-editing-records-with-jqueryui-dialogs-and-ajaxforms-razor-version/)並給我對此有何意見?我真的很喜歡它顯示對話框的方式,允許你在父頁面上做一些事情(在這種情況下顯示twitter這樣的消息)。 –
是的,這基本上是我建議的第二種方法:將內容作爲部分視圖加載到對話框中。與masterpage的交互是通過返回一個JSONResult到編輯/發佈操作並擺弄一些javascript來完成的。 – Jan