4
所以我需要做一些事情,當用戶離開頁面。 我想我可以使用JQuery window.unload捕獲該事件,但我不確定如何將一些數據保存回數據庫。ASP.NET MVC - 在頁面卸載
我很高興打電話給另一個動作或類似的東西,但我不想阻止用戶進入他們前往的頁面。
任何想法?
更新:解決方案
這裏是我去解決(我會做出錯誤處理更好一點後:))。
因爲我需要執行刪除操作,所以在閱讀本文後添加了一些額外的安全性; http://stephenwalther.com/blog/archive/2009/01/21/asp.net-mvc-tip-46-ndash-donrsquot-use-delete-links-because.aspx
在視圖:
$(window).unload(function() {
var ajurl = "/Assignments/unlockAssignment/" + '@model.ID' + "/";
$.ajaxSetup ({
cache: false
});
$.ajax({
type: "DELETE",
url: ajurl,
error: function (xhr, status, error) {
//do something about the error
alert('error');
},
success: function(){
alert('Data Saved:');
}
});
});
的控制器
<AcceptVerbs(HttpVerbs.Delete)>
<Authorize()>
Function unlockAssignment(ByVal id As Integer)
Dim ass As Assignment = db.Assignments.Find(id)
Dim lck = From a In db.AssignmentLocks
Where a.ID = ass.Lock.ID
Select a
db.Entry(lck.FirstOrDefault).State = EntityState.Deleted
db.SaveChanges()
End Function
火和忘記的聲音很好。我試圖實現鎖定功能,以便其他用戶無法編輯記錄,如果其他用戶打開它。 我以前沒有真正使用過Ajax;有人能提供一個簡單的例子嗎? – Tom
@Tom:在這裏查看複合視頻視頻:http://www.asp.net/mvc(他們是免費的,非常好的起點)。 –
我已經完成了這一點,雖然與PHP。沒有太大的區別 - 關鍵是使用'$(window).unload()',並且確實假設請求沒有做任何事情。它似乎工作正常。 – Cymen