编辑:这是使用 HttpPost 使用 ajax 的方法。
//
// POST: /Divisions/Delete
[HttpPost, ActionName("Delete"), Authorize]
public ActionResult DeleteConfirmed(int id)
{
Division division = _db.Divisions.Single(x => x.DivisionId == id);
string errorMessage;
if (DbRelationEnforcer.CanDelete(_db, division, out errorMessage))
{
division.SetDeleted(User.Identity.Name);
_db.SaveChanges();
return Json(new JsonResponseCreatePartial { Success = true }, JsonRequestBehavior.AllowGet);
}
return Json(new JsonResponseCreatePartial { Success = false, Message = errorMessage }, JsonRequestBehavior.AllowGet);
}
然后,在视图上,您必须使用<input type="submit">Save changes</input>
来保存您的更改(在表单内),并使用一个简单的链接/按钮来删除,如下所示:
<h2>Edit SAS Program</h2>
@using (Html.BeginForm("Edit", "SasProgram", FormMethod.Post))
{
<label for="Name">Name</label>
@Html.TextBoxFor(model => model.Name)
<input id='delete-btn' type="button" class="button" value="Delete" />
<input type="submit" class="button" value="Save Changes" />
}
最后,当用户单击删除时,您必须使用 JS 从视图中发布您的操作。
<script type='text/javascript'>
$(function() {
$("input#delete-btn").click(function(){
$.post('@Url.Action("Delete")', '@Model.Id', function(data) {
if(data.Success) {
' ... handle the success case
} else {
' ... error management
}
});
});
});
</script>
这将起作用,但为了获得更好的用户体验,最好在索引/列表视图中使用删除按钮,并在执行 ajax 发布之前使用 JQuery UI 对话框进行确认。如果/当您想要一个接一个地删除多个项目时,这将跳过加载编辑页面。