時間:2017-03-09
Asp.net Mvc實現增刪改查
1, 創建數據庫
可參考我寫的EntityFramework實現過程:http://www.lxweimin.com/nb/10166743
基于EF-ModelFirst思想在項目models文件夾下新建一個ADO.NET實體數據模型,完成實體和關系的建立,并生成數據庫。
2,新建控制器
新建StudentController
一般index頁面用來展示列表
using System.Web;
using System.Web.Mvc;
using MVCFirstDemo.Models;
namespace MVCFirstDemo.Controllers
{
public class StudentController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
在index方法上右擊鼠標選擇添加視圖
模板選擇List,模型類選擇Student,上下文選擇你自己的上下文(你的上下文類名)。
自動生成:Views/Student/Index.cshtml
查
將查詢結果作為集合通過ViewData.Model傳到前端
#region 學生列表
public ActionResult Index()
{
ViewData.Model = dbContext.StudentSet.AsEnumerable();//將查詢結果作為集合通過ViewData.Model傳到前端
return View();
}
#endregion
前端將通過foreach遍歷集合中的每個對象進行展示,具體可查看自動生成的代碼。~/Views/Student/Index.cshtml
當前頁面(可先手動在數據庫添加一些數據):
003.png
增
在StudentController中添加方法
#region Create
public ActionResult Create()
{
return View();
}
通過Create這個方法新建頁面,方法同“查”。
當前頁面:
加下來的問題是如何將前端的數據傳到后臺,并在后臺將數據保存到數據庫。
點擊Create之后,系統會默認地去Controller中查找同名的Action進行處理(從哪來,回哪去),所以此時對Create方法進行重載,并且限制只有是HttpPost的時候進行響應。
[HttpPost]
public ActionResult Create(Student student) //從前端獲取對象
{
dbContext.StudentSet.Add(student);
dbContext.SaveChanges();
return RedirectToAction("index");//返回index頁面,即list頁面
}
改
此時點擊Edit
程序跳到另一個頁面,你們的程序會報錯,因為StudentController下面還沒有Edit方法,但是此時我們關注的對象是URL地址,通過URL地址我們可以看出index頁面是向Edit頁面傳遞了一個id,所以我們的Edit頁面可以通過這個id來獲取這個id對應的在數據庫中的值并進行展示。之后再進行更改。
在StudentController下面新建Edit方法
public ActionResult Edit(int id)
{
//ViewData.Model = dbContext.StudentSet.FirstOrDefault(u => u.Id == id);
ViewData.Model = dbContext.StudentSet.Find(id);//將查詢結果通過ViewData.Model傳到前端
return View();
}
現在點擊Edit之后已經能夠在Edit頁面對數據進行展示了,接下來的問題是如何將用戶更改后的數據同步到數據庫。
思想同Create,從哪來,到哪去。
[HttpPost]
public ActionResult Edit(Student student)
{
dbContext.Entry(student).State = System.Data.Entity.EntityState.Modified;
dbContext.SaveChanges();
return RedirectToAction("Index");
//連接到其他控制器下的方法 return RedirectToAction("Index","Home");
//使用這個方法會報錯 return Redirect("index");
}
Delete & Details
#region Details
public ActionResult Details(int id)
{
ViewData.Model = dbContext.StudentSet.Find(id);
return View();
}
#endregion
#region Delete
public ActionResult Delete(int id)
{
ViewData.Model = dbContext.StudentSet.Find(id);
return View();
}
[HttpPost]
public ActionResult Delete(Student student)
{
dbContext.Entry(student).State = System.Data.Entity.EntityState.Deleted;
dbContext.SaveChanges();
return RedirectToAction("Index");
}
#endregion
至此Asp.net Mvc的增刪改查已全部實現。
項目完整代碼:鏈接:http://pan.baidu.com/s/1i431ra1 密碼:5kjh