Так что мне нужно сделать пару вещей, когда пользователь покидает страницу.
Я полагаю, что могу захватить это событие с помощью 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