У меня есть таблица с записями, в которой есть ссылки для удаления. По сути, я следовал руководству по NerdDinner для этой части в MVC. Но я не хочу иметь представление подтверждения, я бы предпочел иметь диалоговое окно подтверждения, а затем, если оно подтверждено, пусть метод действия HttPost удалит запись напрямую.
У меня что-то работает, но, будучи новичком в MVC и jQuery, я не уверен, правильно ли я это делаю.
Вот jQuery:
$(function () {
$('.delete').click(function () {
var answer = confirm('Do you want to delete this record?');
if (answer) {
$.post(this.href, function () {
window.location.reload(); //Callback
});
return false;
}
return false;
});
});
И удалить ссылку действия:
<%: Html.ActionLink("Delete", "Delete", new { id = user.UserID }, new { @class = "delete" })%>
И, наконец, метод действия удаления:
[HttpPost]
public ActionResult Delete(int id)
{
_db = new UsersEntities();
try
{
//First delete the dependency relationship:
DeleteUserVisits(id);
//Then delete the user object itself:
DeleteUser(id);
}
catch (Exception)
{
return View("NotFound");
}
return RedirectToAction("Index");
}
Теперь у меня есть несколько вопросов по этому поводу:
В интернете я нашел функцию создания ссылки POST вместо GET: `$ .post (this.href); вернуть ложь; И я не уверен, что делает «возврат ложного». Я попытался изменить его для своих нужд с помощью обратного вызова и так далее, и сохранил возвращаемую часть, не зная, для чего она нужна.
Во-вторых, у метода действия есть атрибут HttpPost, но я также где-то читал, что вы можете использовать глагол удаления. Тебе следует? А как насчет RedirectToAction? Первоначально целью было обновить страницу, но это не сработало, поэтому я добавил вместо этого window.location.reload в обратный вызов в jQuery. Есть мысли?
Метод действия Delete вызывает несколько вспомогательных методов, поскольку, как представляется, с помощью Entity Framework, который я использую для данных, я не могу просто удалить запись, если она имеет зависимости отношений. Я должен был сначала удалить отношения, а затем саму запись "Пользователь". Это прекрасно работает, но я бы подумал, что можно будет просто удалить запись, и все отношения будут автоматически удалены ...?
Я знаю, что вы не должны просто удалять ссылки напрямую, потому что сканеры и т. Д. Могут случайно удалить записи. Но с jQuery, есть ли проблемы с безопасностью с этим? Краулеры не могли этого сделать, когда между ними проходит проверка jQuery, верно?
Любые разъяснения будут с благодарностью!