Visual Studio2017中使用MVC+EF+MySql实现简单的增删改查3:简单的增删改查

简单的增删改查

在上上一篇和上一篇已经建好了MVC项目和实体数据模型,这一篇是在前两篇的基础上利用EF对数据库中的表进行增删改查。

由于建的项目是带有模板的,在这里我先删除Controllers文件夹下HomeController文件中的About和Contact方法,同时删除Views文件夹下Home文件夹下的三个.cshtml文件,避免模板默认页面对开发过程的干扰。
Visual Studio2017中使用MVC+EF+MySql实现简单的增删改查3:简单的增删改查_第1张图片
鼠标放在Index()方法出右键“添加视图”,出现如下界面
Visual Studio2017中使用MVC+EF+MySql实现简单的增删改查3:简单的增删改查_第2张图片
点击“添加”按钮,这样就新建了一个新的空的Index.cshtml页面。

1.查询数据

在HomeController控制器文件中添加对数据模型类的引用:

using Publish.Entities;

修改相关代码如下:

namespace Publish.Controllers
{
    public class HomeController : Controller
    {
        public IList<publish> publishList { get; set; }
        publishEntities pe = new publishEntities();
        public ActionResult Index()
        {
            publishList = pe.Set<publish>().ToList();
            ViewBag.publishList = publishList;
            return View();
        }
     }
}

添加Index视图页面代码:

@{
    ViewBag.Title = "Index";
    Layout = null;
}
@using Publish.Entities;
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div style="text-align:center;margin-top:200px;">
        <table align="center" border="1" cellpadding="2" cellspacing="0">
            <tr><th>Id</th><th>标题</th><th>内容</th><th>发布时间</th><th>修改时间</th><th>操作</th></tr>
            @foreach (publish publishInfo in ViewBag.publishList)
            {
                <tr><td>@publishInfo.Id</td><td>@publishInfo.Subiect</td><td>@publishInfo.Contents<td>@publishInfo.PubTime</td><td>@publishInfo.EditTime</td><td><a href="/Home/Edit/@publishInfo.Id">编辑</a> <a href="javascript:void(0)" onclick="del(@publishInfo.Id)">删除</a></td></tr>
            }
        </table>
    </div>
</body>
</html>

展示效果:
Visual Studio2017中使用MVC+EF+MySql实现简单的增删改查3:简单的增删改查_第3张图片

2.新增数据

修改相关代码如下:

public ActionResult Add()
        {
            return View();
        }
        [HttpPost]
        public ActionResult Add(publish publishInfo)
        {
            if (!ModelState.IsValid)
            {
                return Content("error");
            }
            publishInfo.Id = Guid.NewGuid().ToString();
            publishInfo.PubTime = DateTime.Now;
            publishInfo.EditTime = DateTime.Now;
            pe.publishes.Add(publishInfo);
            pe.SaveChanges();
            publishList = pe.Set<publish>().ToList();
            ViewBag.publishList = publishList;
            return View("Index");
        }

添加Add视图页面代码

@{
    ViewBag.Title = "Add";
}
@model Publish.Entities.publish
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>添加</title>
</head>
<body>
    <div style="text-align:center;margin-top:150px;">
        @using (Ajax.BeginForm("Add", "Home", new AjaxOptions { HttpMethod = "post", OnSuccess = "success" }))
        {
            <div class="col-md-12">
                <div class="col-md-4 text-right">
                    <label>标题:</label>
                </div>
                <div div class="col-md-8 text-left">
                    @Html.TextBoxFor(u => u.Subiect, new { @style = "width: 300px;height:30px;" })
                </div>
            </div><br /><br />
            <div class="col-md-12">
                <div class="col-md-4 text-right">
                    <label>内容:</label>
                </div>
                <div class="col-md-8 text-left">
                    @Html.TextAreaFor(u => u.Contents, new { @style = "width: 300px;height:200px;" })
                </div>
            </div>
            <br /><br />
            <div class="col-md-12" style="margin-top:20px;">
                <div class="col-md-6 text-right">
                    <input type="submit" value="添加" />
                </div>
                <div class="col-md-6 text-left">
                    <a href="/Home/Index">返回</a>
                </div>
            </div>
        }
    </div>
</body>
</html>

页面显示效果:
Visual Studio2017中使用MVC+EF+MySql实现简单的增删改查3:简单的增删改查_第4张图片
Visual Studio2017中使用MVC+EF+MySql实现简单的增删改查3:简单的增删改查_第5张图片

3.修改数据

添加代码如下:

public ActionResult Edit(string id)
        {
            publish publishInfo = pe.Set<publish>().Where(u => u.Id == id).FirstOrDefault();
            return View(publishInfo);
        }

        [HttpPost]
        public ActionResult Edit(publish publishInfo)
        {
            if (!ModelState.IsValid)
            {
                return Content("error");
            }
            publishInfo.EditTime = DateTime.Now;
            UpdateModel<publish>(publishInfo);
            pe.Entry(publishInfo).State = EntityState.Modified;
            pe.SaveChanges();
            publishList = pe.Set<publish>().ToList();
            ViewBag.publishList = publishList;
            return View("Index");
        }

添加Edit视图页面代码:

@{
    ViewBag.Title = "Edit";
}
@model Publish.Entities.publish
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>更新</title>
</head>
<body>
    <div style="text-align:center;margin-top:150px;">
        @using (Ajax.BeginForm("Edit", "Home", new AjaxOptions { HttpMethod = "post", OnSuccess = "success" }))
        {
            @Html.HiddenFor(u => u.Id)
            @Html.HiddenFor(u => u.PubTime)
            @Html.HiddenFor(u => u.EditTime)
            @Html.HiddenFor(u => u.State)
            <div class="col-md-12">
                <div class="col-md-4 text-right">
                    <label>标题:</label>
                </div>
                <div div class="col-md-8 text-left">
                    @Html.TextBoxFor(u => u.Subiect, new { @style = "width: 300px;height:30px;" })
                </div>
            </div><br /><br />
            <div class="col-md-12">
                <div class="col-md-4 text-right">
                    <label>内容:</label>
                </div>
                <div class="col-md-8 text-left">
                    @Html.TextAreaFor(u => u.Contents, new { @style = "width: 300px;height:200px;" })
                </div>
            </div>
            <br /><br />
            <div class="col-md-12" style="margin-top:20px;">
                <div class="col-md-6 text-right">
                    <input type="submit" value="保存" />
                </div>
                <div class="col-md-6 text-left">
                    <a href="/Home/Index">返回</a>
                </div>
            </div>
        }
    </div>
</body>
</html>

4.删除数据

删除数据代码比较简单,如下所示:

public ActionResult Delete(string id)
        {
            publish publishInfo = pe.publishes.SingleOrDefault(a => a.Id == id);
            pe.Set<publish>().Remove(publishInfo);
            pe.SaveChanges();

            publishList = pe.Set<publish>().ToList();
            ViewBag.publishList = publishList;
            return View("Index");
        }

到这里,使用ASP.NET MVC+EF做出来的一个小的增删改查的例子就算是完成了。

你可能感兴趣的:(Visual Studio2017中使用MVC+EF+MySql实现简单的增删改查3:简单的增删改查)