【发布时间】:2011-10-06 01:42:55
【问题描述】:
所以当用户离开页面时,我需要做几件事。 我想我可以使用 JQuery window.unload 捕获该事件,但我不确定如何将一些数据保存回数据库。
我很乐意调用其他操作或类似的操作,但我不想阻止用户转到他们要去的页面。
有什么想法吗?
更新:解决方案
这是我采用的解决方案(稍后我会更好地处理错误:))。
由于我需要执行删除操作,我在阅读这篇文章后添加了一些额外的安全性; 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
【问题讨论】:
标签: jquery asp.net-mvc asp.net-mvc-3