在上上一篇和上一篇已经建好了MVC项目和实体数据模型,这一篇是在前两篇的基础上利用EF对数据库中的表进行增删改查。
由于建的项目是带有模板的,在这里我先删除Controllers文件夹下HomeController文件中的About和Contact方法,同时删除Views文件夹下Home文件夹下的三个.cshtml文件,避免模板默认页面对开发过程的干扰。
鼠标放在Index()方法出右键“添加视图”,出现如下界面
点击“添加”按钮,这样就新建了一个新的空的Index.cshtml页面。
在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>
修改相关代码如下:
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>
添加代码如下:
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>
删除数据代码比较简单,如下所示:
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做出来的一个小的增删改查的例子就算是完成了。