首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC 4删除操作,包括成功和失败操作

MVC 4删除操作,包括成功和失败操作
EN

Stack Overflow用户
提问于 2012-11-17 00:14:38
回答 1查看 1.9K关注 0票数 0

在您看来,处理删除项目的最佳方法是什么?

下面是我最初想法的代码示例,但问题是return RedirectToAction("Index")丢失了上下文,因此索引不知道该角色无法删除,因为有用户附加到它。

因此,如果它不能被删除,我可以显示一个隐藏的div中包含的消息,甚至是一个带有警告的方法,让用户知道为什么它不能被删除,但是Index应该知道这个问题。

我不喜欢使用Session或ViewData。我曾尝试使用@Ajax.ActionLink(),但总是收到GET请求。

jQuery 1.7.1可供使用。

控制器

代码语言:javascript
复制
public ActionResult Delete(string roleName)
{
    RoleProvider roleProvider = new SARoleProvider();
    bool isDelete = roleProvider.DeleteRole(roleName, true);

    if (isDelete)
    {
        return RedirectToAction("Index");
    }

    return RedirectToAction("Index");
}

视图

代码语言:javascript
复制
@Html.ActionLink("Delete", "Delete", new { roleName = item.Role }, new { @class = "confirmDelete btn btn-danger btn-mini", onclick = "return confirm('Delete this item?');" })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-19 22:17:24

我最终使用了jQuery帖子来发送和接收我需要的信息,这是基于该项目是否可以删除。

Index.cshtml

代码语言:javascript
复制
<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

代码语言:javascript
复制
    [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);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13420316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档