Asp.Net MVC EF-DbFirst之增删改查
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Asp.Net MVC EF-DbFirst之增删改查,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含6028字,纯文字阅读大概需要9分钟。
内容图文
![Asp.Net MVC EF-DbFirst之增删改查](/upload/InfoBanner/zyjiaocheng/483/5a023b946ff24f288ea576f066fcb7ba.jpg)
控制器及动作方法:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Mvc5Test.Models; using System.Data.Entity.Infrastructure; namespace Mvc5Test.Controllers { //用户的请求总是先发到控制器的某个Action方法,再由Action方法返回对应的视图 public class HomeController : Controller { //数据上下文对象 BogEntities db = new BogEntities(); //查询文章 public ActionResult Index() { //SQO标准查询运算符 //DbQuery<ClassType> query = db.ClassTypes.Where(ct => ct.ParentID==0) as DbQuery<ClassType>; //List<ClassType> ctList = db.ClassType.Where(ct => ct.ParentID == 0).ToList<ClassType>(); //Linq List<Artical> aList = (from a in db.Artical where a.ClassTypeID != 4 select a).ToList(); //***使用ViewData传递数据到视图 ViewData["aList"] = aList; return View(); } //删除文章 //此处的默认参数id在App_Start的RouteConfig.cs配置 public ActionResult Del(int id) { try { //1.创建要删除的对象 Artical a = new Artical { ID = id }; //2.将对象添加到EF管理容器 db.Artical.Attach(a); //3.将对象包装类的状态标识为删除 db.Artical.Remove(a); //4.更新数据库 db.SaveChanges(); //5.更新成功,命令浏览器跳转到列表页 return RedirectToAction("Index", "Home"); } catch(Exception e) { return Content("删除失败!!!"+e.Message); } } //修改文章-显示动作 [HttpGet] //get请求时执行下面这个方法 public ActionResult Edit(int id) { //1.根据id查询数据库,返回集合中的第一个对象 Artical a = (from at in db.Artical where at.ID == id select at).FirstOrDefault(); //2.生成文章分类数据下拉列表集合 IEnumerable<SelectListItem> selectList = (from ct in db.ClassType select ct).ToList() //从db.ClassType集合中选取元素形成一个新的集合CT .Select(ct => new SelectListItem { Value = ct.ID.ToString(), Text = ct.ClassName } //从CT集合中遍历每个元素,并将遍历的每个元素转成SelectListItem对象 ).ToList(); //***使用ViewBag传递数据到视图 ViewBag.CtList = selectList; //3.将文章传递给视图 //***使用View的构造方法,将数据传给视图上名为Model的属性 return View(a); } //修改文章-保存动作 [HttpPost] //post请求时执行下面这个方法 public ActionResult Edit(Artical model) //此时的model就是页面中待修改的文章实体对象 { try { //1.将实体对象加入EF对象容器中,并获取伪包装类对象 DbEntityEntry<Artical> entry = db.Entry<Artical>(model); //2.将包装类对象的状态设置为unchanged entry.State = System.Data.Entity.EntityState.Unchanged; //3.设置被改变的属性 entry.Property(a => a.Title).IsModified = true; entry.Property(a => a.ClassTypeID).IsModified = true; //4.提交到数据库,完成更改 db.SaveChanges(); //5.更新成功,则命令浏览器重定向到列表页 return RedirectToAction("Index","Home"); } catch (Exception e) { return Content("修改失败!!!"+e.Message); } } //新增文章-显示动作 [HttpGet] public ActionResult Add() { //生成文章分类数据下拉列表集合 IEnumerable<SelectListItem> selectList = (from ct in db.ClassType select ct).ToList() //从db.ClassType集合中选取元素形成一个新的集合CT .Select(ct => new SelectListItem { Value = ct.ID.ToString(), Text = ct.ClassName } //从CT集合中遍历每个元素,并将遍历的每个元素转成SelectListItem对象 ).ToList(); //***使用ViewBag传递数据到视图 ViewBag.CtList = selectList; return View(); } //新增文章-保存动作 [HttpPost] public ActionResult Add(Artical model) { try { //1.将实体对象加入EF对象容器中,并获取伪包装类对象 DbEntityEntry<Artical> entry = db.Entry<Artical>(model); //2.将包装类对象的状态设置为Added entry.State = System.Data.Entity.EntityState.Added; //3.提交到数据库,完成新增 db.SaveChanges(); //4.更新成功,则命令浏览器重定向到列表页 return RedirectToAction("Index", "Home"); } catch (Exception e) { return Content("新增失败!!!" + e.Message); } } } }
首页数据列表视图:
@using Mvc5Test.Models; @{ Layout = null; } <html> <head> <script type="text/javascript"> function del(id){ if (confirm("确定要删除吗?")) { window.location.href = "/home/del/" + id; } } </script> </head> <body> <table> <tr> <td>id</td> <td>title</td> <td>class type</td> <td>opration</td> </tr> @foreach (Artical a in ViewData["aList"] as List<Artical>) { <tr> <td>@a.ID</td> <td>@a.Title</td> <td>@a.ClassType.ClassName</td> <!--a.ClassType是关联自ClassType表ID字段的外键,EF自动进行外键关联查询--> <td> <a href="javascript:del(@a.ID)">delete</a> <a href="/home/edit/@a.ID">edit</a> </td> </tr> } <tr> <td colspan="4">@Html.ActionLink("新增文章","Add","Home")</td> </tr> </table> </body> </html>
新增视图:
@model Mvc5Test.Models.Artical @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Add</title> </head> <body> @using (Html.BeginForm("Add", "Home", FormMethod.Post)) { <table> <tr> <td colspan="2">新增</td> </tr> <tr> <td>标题:</td> <!--使用HtmlHelper的强类型方法直接从Model中根据Title属性生成文本框--> <td>@Html.TextBoxFor(a => a.Title)</td> </tr> <tr> <td>分类:</td> <!--使用HtmlHelper的强类型方法生成下拉框,并根据Model的ClassTypeID属性设置默认选中项--> <td>@Html.DropDownListFor(a => a.ClassTypeID, ViewBag.CtList as IEnumerable<SelectListItem>)</td> </tr> <tr> <td> <input type="submit" value="确定新增" /> </td> <td> @Html.ActionLink("返回", "Index", "Home") </td> </tr> </table> } </body> </html>
编辑视图:
@model Mvc5Test.Models.Artical <!--以上代码是指定页面Model属性的类型 --> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Edit</title> </head> <body> @using (Html.BeginForm("Edit", "Home", FormMethod.Post)) { <table> <tr> <td colspan="2">修改</td> @Html.HiddenFor(a => a.ID) </tr> <tr> <td>标题:</td> @*<td>@Html.TextBox("Title", (object)Model.Title)</td>*@ <!--使用HtmlHelper的强类型方法直接从Model中根据Title属性生成文本框--> <td>@Html.TextBoxFor(a => a.Title)</td> </tr> <tr> <td>分类:</td> <!--使用HtmlHelper的强类型方法生成下拉框,并根据Model的ClassTypeID属性设置默认选中项--> <td>@Html.DropDownListFor(a=>a.ClassTypeID,ViewBag.CtList as IEnumerable<SelectListItem>)</td> </tr> <tr> <td> <input type="submit" value="确定修改" /> </td> <td> @Html.ActionLink("返回","Index","Home") </td> </tr> </table> } </body> </html>
Asp.Net MVC EF-DbFirst之增删改查
标签:cti item 下拉 文章 默认 blog for width asp.net
本文系统来源:http://www.cnblogs.com/Arlar/p/6885410.html
内容总结
以上是互联网集市为您收集整理的Asp.Net MVC EF-DbFirst之增删改查全部内容,希望文章能够帮你解决Asp.Net MVC EF-DbFirst之增删改查所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。