我想提供删除记录的能力,但只有[HttpPost]动作方法,我的意思是,我不希望另一个视图确认删除,只有javascript确认会很好。
问题是因为我没有提供[HttpGet]动作方法,所以控制器不能将URL指向[HttpPost]动作方法,而是当我点击删除链接时它会给出404 Not Found响应。
这是我的行动方法:
// Note that there is no [HttpGet] delete action method
[HttpPost]
public ActionResult Delete(string name)
{
var village = Villages.FirstOrDefault(v => v.Name == name && v.Deleted == false);
if (village == null)
return View("Error");
village.Deleted = true;
dc.SubmitChanges();
return RedirectToRoute(new { action = "Index" });
}
答案 0 :(得分:2)
使用删除链接作为操作创建隐藏表单。用户确认时提交:
<form method="post" id="deleteForm" action="">
</form>
<script type="text/javascript">
$('document').ready(function() {
$('a.delete').click(function(){
if (confirm('You sure?')) {
$('#deleteForm').attr('action', uri);
$('#deleteForm').submit(); //jquery
}
return false;
});
});
</script>
<a href="/user/remove/5" class="delete">Delete</a>
<强>更新强>
将脚本转换为jquery。您需要做的就是将表单,脚本和“删除”类添加到删除链接。表格处理自动完成所有链接。
答案 1 :(得分:1)
我认为您希望使用 RedirectToAction(),这将使浏览器针对您指定的任何控制器/操作进行相应的GET请求。这还可以通过点击浏览器刷新并重新提交POST来减少用户意外提交提交请求的风险。