【MVC】.NET实践(三)—对数据库的数据进行删除与修改

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cxh6863/article/details/83472363

在主界面添加修改和删除的超链接(Index.cshtml)

<table id="tbList">
        <tr>
            <th>id</th>
            <th>姓名</th>
            <th>状态</th>
            <th>操作</th>
        </tr>

        @*@Html.Raw(ViewBag.HtmlStr)*@
        @foreach (BlogUser a in ViewData["DataList"] as List<BlogUser>)
        {
            <tr>
                <td>@a.Id</td>
                <td>@a.Name</td>
                <td>@a.State</td>
                <td>

                    <a href="/home/modify/@a.Id">修改</a>
                    <a href="javascript:del(@a.Id)">删除</a>
                </td>
            </tr>
            
        }
    </table>

一、数据的删除

HomeController

HomeController中添加一个Delete方法

public ActionResult Delete(int id)
{
            try
            {
                //1.创建要删除的对象
                BlogUser user = new BlogUser() { Id = id };
                //2.将对象添加到EF管理容器
                db.BlogUser.Attach(user);
                //3.将对象包装类的状态 标志位删除状态
                db.BlogUser.Remove(user);
                //4.跟新到数据库
                db.SaveChanges();
                return RedirectToAction("Index", "Home");
            }
            catch (Exception ex)
            {

                return Content("删除失败"+ex.Message);
            }
            
 }

Index.cshtml

在主界面Index.cshtml中添加js代码,转向home下的delete方法,为了友好一些,确认是否删除

<script type="text/javascript">
        function del(id) {
            if (confirm("您确定要删除吗?")) {
                window.location = "/home/delete/" + id;
            }
        }
    </script>

二、数据的修改

HomeController.cs

(1)显示要修改的数据

[HttpGet]
public ActionResult Modify(int id)
 {
            //1.根据id查询数据库,返回的集合中 拿到第一个实体对象
            BlogUser user = (from a in db.BlogUser where a.Id == id select a).FirstOrDefault();
            //使用View的构造函数,将数据传递给视图上的名为Model的属性
            return View(user);
 }

(2)执行修改

[HttpPost]
public ActionResult Modify(BlogUser blogUser)
{
            try
            {
                //db.Configuration.ValidateOnSaveEnabled = false;
                //1.将实体对象加入EF对象容器中,并获取伪包装类对象
                DbEntityEntry<BlogUser> entry = db.Entry<BlogUser>(blogUser);
                //2.将包装类对象的状态设置为unchanged
                entry.State = System.Data.Entity.EntityState.Unchanged;
                //3.设置 被改变的属性
                entry.Property(a => a.Name).IsModified = true;
                entry.Property(a => a.State).IsModified = true;
                //4.提交到数据库
                db.SaveChanges();
                //5.更新成功,则命令浏览器重定向到Home/Index 方法
                return RedirectToAction("Index", "Home");


            }
            catch (Exception ex)
            {

                return Content("修改失败" + ex.Message);
            }
 }

由于方法名一样,所以在方法前面用[HttpPost]和[HttpGet]来区分

Modify.cshtml

需在最上方引用空间:@model MVC练习.Models.BlogUser

@using (Html.BeginForm("Modify", "Home", FormMethod.Post))
    {
        <table id="tbList">
            <tr>
                <td colspan="2">修改 @Html.HiddenFor(a=>a.Id)</td>
            </tr>
            <tr>
                <td>姓名:</td>
                <td>@Html.TextBoxFor(a => a.Name)</td>
            </tr>
            <tr>
                <td>状态:</td>
                <td>@Html.TextBoxFor(a => a.State)</td>
            </tr>
            <tr>
                <td colspan="2"><input type="submit" value="确认修改" />@Html.ActionLink("返回", "Index", "Home")</td>

            </tr>
        </table>
    }

布局代码

<style type="text/css">
        #tbList {
            border: 1px solid #0094ff;
            width: 400px;
            margin: 10px auto;
            border-collapse: collapse;
        }

            #tbList th, td {
                border: 1px solid #0094ff;
                padding: 10px;
            }
    </style>

结果

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/cxh6863/article/details/83472363