概述:該節主要目的是通過ASP.Net MVC3.0快速實現增刪改查。
一、創建MVC項目
1.1、在解決方案中添加MVC3.0項目
vs2010中沒有自帶MVC3.0,下載:http://www.asp.net/mvc/mvc3
在這里我們選擇“空”模版
1.2、添加相關引用
1)由於使用的EF因此需要添加一坨相關引用,我們可以在MVC項目中的Model中添加一個ASP.NET 實體數據模型。此時VS會幫我們引用相應的程序集,完成后我再
刪除它。
2) 再引用我們的程序集,Cnblogs.Rdst.IBLL、Cnblogs.Rdst.BLL、Cnblogs.Rdst.Domain
3、配置連接字符串
將Cnblogs.Rdst.Domain中的App.Config文件里的
<connectionStrings> <add name="ModelContainer" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=Cnblogs-Rdst;persist security info=True;user id=sa;password=Hell0F18;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /> </connectionStrings>
拷貝到MVC項目中的web.config里的<configuration>節點下,如下圖:
二、添加UserInfo控制器
2.1、在創建控制器前我們需要將解決方案編譯一下。
2.2、回到MVC項目中右鍵點擊Controllers,創建一個名為UserInfo的控制器
2.3、“模型類”選擇UserInfo實體類,“數據上下文”選擇ModelContainer實體上下文,在此我們選擇Razor實體引擎。
三、快速實現CRUD
3.1 此時VS會幫我們生成UserInfo和View下的一些頁面
3.2 以下代碼是UserInfoController控制器中增刪改查的代碼,其中注釋掉的代碼是vs自動生成的。
1 using System; 2 using System.Collections.Generic; 3 using System.Data; 4 using System.Data.Entity; 5 using System.Linq; 6 using System.Web; 7 using System.Web.Mvc; 8 using Cnblogs.Rdst.Domain; 9 using Cnblogs.Rdst.IBLL; 10 using Cnblogs.Rdst.BLL; 11 12 namespace Cnblogs.Rdst.Mvc.Controllers 13 { 14 public class UserInfoController : Controller 15 { 16 //private ModelContainer db = new ModelContainer(); 17 IUserInfoService db = new UserInfoService(); 18 19 // 20 // GET: /UserInfo/ 21 22 public ViewResult Index() 23 { 24 // return View(db.UserInfo.ToList()); 25 return View(db.LoadEntites(u => true)); 26 } 27 28 // 29 // GET: /UserInfo/Details/5 30 31 public ViewResult Details(int id) 32 { 33 //UserInfo userinfo = db.UserInfo.Single(u => u.ID == id); 34 UserInfo userinfo = db.LoadEntites(u => u.ID == id).FirstOrDefault();//FirstOrDefault()獲取集合第一項 35 return View(userinfo); 36 } 37 38 // 39 // GET: /UserInfo/Create 40 41 public ActionResult Create() 42 { 43 return View(); 44 } 45 46 // 47 // POST: /UserInfo/Create 48 49 [HttpPost] 50 public ActionResult Create(UserInfo userinfo) 51 { 52 if (ModelState.IsValid) 53 { 54 //db.UserInfo.AddObject(userinfo); 55 //db.SaveChanges(); 56 db.AddEntity(userinfo); 57 return RedirectToAction("Index"); 58 } 59 60 return View(userinfo); 61 } 62 63 // 64 // GET: /UserInfo/Edit/5 65 66 public ActionResult Edit(int id) 67 { 68 //UserInfo userinfo = db.UserInfo.Single(u => u.ID == id); 69 UserInfo userinfo = db.LoadEntites(u=>u.ID==id).FirstOrDefault(); 70 return View(userinfo); 71 } 72 73 // 74 // POST: /UserInfo/Edit/5 75 76 [HttpPost] 77 public ActionResult Edit(UserInfo userinfo) 78 { 79 if (ModelState.IsValid) 80 { 81 // db.UserInfo.Attach(userinfo); 82 // db.ObjectStateManager.ChangeObjectState(userinfo, EntityState.Modified); 83 // db.SaveChanges(); 84 db.UpdateEntity(userinfo); 85 return RedirectToAction("Index"); 86 } 87 return View(userinfo); 88 } 89 90 // 91 // GET: /UserInfo/Delete/5 92 93 public ActionResult Delete(int id) 94 { 95 // UserInfo userinfo = db.UserInfo.Single(u => u.ID == id); 96 UserInfo userinfo = db.LoadEntites(u => u.ID == id).FirstOrDefault(); 97 return View(userinfo); 98 } 99 100 // 101 // POST: /UserInfo/Delete/5 102 103 [HttpPost, ActionName("Delete")] 104 public ActionResult DeleteConfirmed(int id) 105 { 106 //UserInfo userinfo = db.UserInfo.Single(u => u.ID == id); 107 // db.UserInfo.DeleteObject(userinfo); 108 // db.SaveChanges(); 109 var userInfo=db.LoadEntites(u=>u.ID==id).FirstOrDefault(); 110 db.DelEntity(userInfo); 111 return RedirectToAction("Index"); 112 } 113 114 //protected override void Dispose(bool disposing) 115 //{ 116 // db.Dispose(); 117 // base.Dispose(disposing); 118 //} 119 } 120 }
3.3、接下來我們在Global.asax文件中配置一下路由,將controller = "Home"更改為controller = "UserInfo"
3.4、將Cnblogs.Rdst.Mvc項目設置為啟動項,在點擊啟動調試。
在此由於涉及到表外鍵關系,我們需要將映射文件中的外鍵改為可空,在網頁上才可以進行新增操作。
至此,面向對象、面向接口 入門級三層架構項目就已結束了,希望對大家有所幫助!