【发布时间】:2011-04-11 22:48:20
【问题描述】:
我有一个包含删除链接的记录的表。基本上,我遵循了 MVC 中那部分的 NerdDinner 教程。但是我不想有确认视图,我宁愿有一个确认对话框,然后如果确认让 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);返回假;而且我不确定“return false”部分的作用。我尝试通过回调等方式根据需要对其进行修改,并在不知道它的用途的情况下保留了返回部分。
其次,action 方法具有 HttpPost 属性,但我还在某处读到了可以使用删除动词的内容。你应该?那么 RedirectToAction 呢?这样做的目的最初是为了刷新页面,但没有奏效,所以我在 jQuery 的回调中添加了 window.location.reload 。有什么想法吗?
Delete 操作方法调用了几个辅助方法,因为在我用于数据的实体框架中,如果记录具有关系依赖项,我不能只删除它。我必须先删除关系,然后再删除“用户”记录本身。这很好用,但我原以为可以只删除一条记录,所有关系都会自动删除...?
我知道您不应该直接删除链接,因为爬虫等可能会意外删除记录。但是对于 jQuery,这有什么安全问题吗?当中间有 jQuery 检查时,爬虫无法做到这一点,对吧?
任何澄清将不胜感激!
【问题讨论】:
标签: asp.net jquery entity-framework asp.net-mvc-2