zoukankan      html  css  js  c++  java
  • 学用MVC4做网站五:5.4删除文章

    前几天把添加、修改功能都做了,今天开始写删除功能。删除文章既要删除文章本身同时也要在公共模型中删除对应项。

    首先写从数据库中删除文章的函数。打开ArticleRepository修改Delete的函数。有上次的教训这次明白了传递的id应该是公共模型id。

    /// <summary>
            /// 删除文章
            /// </summary>
            /// <param name="commonModelId">公共模型id</param>
            /// <returns></returns>
            public override bool Delete(int commonModelId)
            {
                dbContext.CommonModels.Remove(dbContext.CommonModels.SingleOrDefault(cM => cM.CommonModelId == commonModelId));
                dbContext.Articles.Remove(dbContext.Articles.SingleOrDefault(a => a.CommonModelId == commonModelId));
                return dbContext.SaveChanges() > 0;
            }

    很简单先在对应的公共模型删除,再删除文章,然后保存、返回。

    第二步做UserDelete(int id) action。动作中先是ArticleRepository.Delete(id)进行删除并返回是否成功。然后判断请求类型:如果是Ajax方式返回是否成功的json类型;否则跳转到提示页或错误页。

    /// <summary>
            /// 删除文章
            /// </summary>
            /// <param name="id">公共模型id</param>
            /// <returns></returns>
            [UserAuthorize]
            public ActionResult UserDelete(int id)
            {
                bool _deleted = articleRsy.Delete(id);
                if (Request.IsAjaxRequest())
                {
                    return Json(_deleted);
                }
                else
                {
                    if (_deleted)
                    {
                        Notice _n = new Notice { Title = "删除文章成功", Details = "您已经成功删除了该文章!", DwellTime = 5, NavigationName = "我的文章", NavigationUrl = Url.Action("UserOwn", "Article") };
                        return RedirectToAction("UserNotice", "Prompt", _n);
                    }
                    else
                    {
                        Error _e = new Error { Title = "删除文章失败", Details = "在删除文章时发生错误", Cause = "该文章已经被删除", Solution = Server.UrlEncode("<li>返回<a href='" + Url.Action("UserOwn", "Article") + "'>我的文章</a>页面,输入正确的信息后重新操作</li><li>返回<a href='" + Url.Action("UserDefault", "Article") + "'>文章管理首页</a>。</li><li>联系网站管理员</li>") };
                        return RedirectToAction("ManageError", "Prompt", _e);
                    }
                }
            }

    第三步开始做删除的前台。就不单独写视图,直接写在“我的文章中”。打开UserOwn.cshtml,修改删除连接的ActionLink为@Html.ActionLink("删除", "UserDelete", new { id = item.CommonModelId }, new { @class = "btnDel" })

    然后写点击删除链接的js代码

    <script type="text/javascript">
        $(".btnDel").click(function () {
            if (confirm("你确定要删除该文章吗?")) {
                var url = $(this).attr("href");
                $.post(url, null, function (data) {
                    if (data) {
                        alert("删除成功!");
                        window.location.reload();
                    }
                    else {
                        alert("删除失败!");
                    }
                });
            }
            return false;
        });
    </script>

    先提示“你确定要删除该文章吗?”,如果确定则采用post方式请求删除,并返回相应结果给出相应提示。

    F5 删除一下文章看。

    无标题

  • 相关阅读:
    内存泄漏检测
    qt 关于内存泄漏的检测
    Valgrind 安装与使用
    Qt应用中检测内存泄露——VLD
    Visual C++内存泄露检测—VLD工具使用说明
    ArcGIS Runtime支持的GP工具列表(转 )
    c# 调用ArcEngine的GP工具
    ArcEngine 数据导入经验(转载)
    在ArcEngine中使用Geoprocessing工具-执行工具
    利用C#与AE调用GP工具
  • 原文地址:https://www.cnblogs.com/mzwhj/p/2878406.html
Copyright © 2011-2022 走看看