在您看来,处理删除项目的最佳方法是什么?
下面是我最初想法的代码示例,但问题是return RedirectToAction("Index")丢失了上下文,因此索引不知道该角色无法删除,因为有用户附加到它。
因此,如果它不能被删除,我可以显示一个隐藏的div中包含的消息,甚至是一个带有警告的方法,让用户知道为什么它不能被删除,但是Index应该知道这个问题。
我不喜欢使用Session或ViewData。我曾尝试使用@Ajax.ActionLink(),但总是收到GET请求。
jQuery 1.7.1可供使用。
控制器
public ActionResult Delete(string roleName)
{
RoleProvider roleProvider = new SARoleProvider();
bool isDelete = roleProvider.DeleteRole(roleName, true);
if (isDelete)
{
return RedirectToAction("Index");
}
return RedirectToAction("Index");
}视图
@Html.ActionLink("Delete", "Delete", new { roleName = item.Role }, new { @class = "confirmDelete btn btn-danger btn-mini", onclick = "return confirm('Delete this item?');" })发布于 2012-11-19 22:17:24
我最终使用了jQuery帖子来发送和接收我需要的信息,这是基于该项目是否可以删除。
Index.cshtml
<div class="alert alert-error" id="DeleteError">
<a class="close" data-dismiss="alert">×</a>
<span>There was a problem deleting the Role. Please check that there are no Users in the Role and try again or contact an Administrator.</span>
</div>
@Html.Raw("<a href=\"javascript:deleteRole('" + item.Role + "');\" class=\"confirmDelete btn btn-danger btn-mini\">Delete</a>")
<script type="text/javascript">
$(document).ready(function () {
$('#DeleteError').hide();
});
function deleteRole(roleName) {
if (confirm('Delete the item?')) {
// Begin the request
$.post('@Url.Action("Delete")/?roleName=' + roleName, {}, function(data) {
if (data.IsDeleted) {
// Refresh the page
window.location.reload();
} else if (data.IsError) {
$("#DeleteError").show();
}
});
}
}
</script>Controller.cs
[OutputCache(Duration = 0)]
public JsonResult Delete(string roleName)
{
bool isError = false;
bool isDeleted = Roles.Provider.DeleteRole(roleName, true);
if (!isDeleted)
{
isError = true;
}
return Json(new { IsDeleted = isDeleted, IsError = isError }, JsonRequestBehavior.AllowGet);
}https://stackoverflow.com/questions/13420316
复制相似问题