MVC学习之简单的CRUD
1.一點知識的總結
(1)MVC將展示頁面和后臺處理邏輯分離,不像ASPX中展示頁面繼承自后臺的cs頁面,MVC展示頁面繼承自ViewPage<dynamic>,最終繼承自Page(使用ASPX模板引擎可以看到這種繼承關系)
(2)因為沒有了繼承關系,前后臺的信息傳遞不能使用protected的成員變量進行傳遞,MVC使用ViewDate,進行數據的傳遞
??????? ViewData["UserInfo"]=User;
?(3)? MVC提供了一個ViewData.Model,進行數據的傳遞,可以大大簡化書寫的代碼,提高準確性,方便開發。
??? 使用ASPX引擎的話,需要將ViewPage<dynamic>改為ViewPage<UserInfo>,然后只要在后臺對Model賦值之后,前臺就可以點出來,,這就是強類型頁面,同時使用Rasor引擎的話可以直接在添加視圖的時候,同時選中強類型頁面的勾選,然后選定相應的model即可。
(4)對于初次加載頁面和post提交頁面,對于ASPX存在一個IsPostBack屬性,進行判斷,MVC沒有,當然可以使用隱藏域自己手寫一個postback判斷屬性,然而MVC中提供了更加簡單的方式,可以使用相應的特性進行標記。(HttpPost、HttpGet、HttpDelete、HttpPut等)
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(User user)
{
?
}
(4)? 如何確定刪除的ID呢,在ASPX中可以使用URL進行傳遞?Id=12,同樣在MVC中也是可以使用這種方式進行傳遞的,然后使用Reques進行接收即可,當然可以在Routeconfig中看到對于MVC的地址還有第三個參數ID,所以可以直接/Home/Index/12,就可以了,然后MVC的強大之處就是已經實現了相應的映射,只需要在Index(int Id ),名稱必須和路由規則中名稱一致,但是這種方式只能傳遞一個參量,想要傳遞多個可以使用?UserName=dd&&UseAge=22.
2.CRUD的簡單實現
(1)查
后臺public ActionResult Index(){//獲取數據IQueryable<Teacher> teacherList = dbContext.Teacher.Where<Teacher>(t => true);StringBuilder sb = new StringBuilder();foreach (Teacher teacher in teacherList){sb.Append(string.Format("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td>{4}</td><td>{5}</td><td><a href='/home/Update/{6}'>修改</a><a href='/Home/Delete/{6}' class='delete'>刪除</a></td></tr>", teacher.TeacherId, teacher.LoginId, teacher.LoginPwd, teacher.TeacherName, teacher.Sex, teacher.Birthday, teacher.TeacherId));}ViewData["teacherInfo"] = sb.ToString();return View();}前臺 <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> <%@ Import Namespace="MVCCRUD.Models" %> <!DOCTYPE html><html> <head runat="server"><meta name="viewport" content="width=device-width" /><title>教職員工的列表</title><script>window.οnlοad= function () {var element = document.getElementsByClassName("delete");for(var i=0;i<element.length;i++){element[i].οnclick= function () {if (!confirm("確定要刪除嗎"))return false;}}}</script></head> <body><div><a href="/Home/AddUser">添加</a><table><th>ID</th><th>登錄ID</th><th>登錄密碼</th><th>姓名</th><th>性別</th><th>生日</th><th>操作</th><%=ViewData["teacherInfo"].ToString() %></table></div> </body> </html>對于前臺的數據使用的是在后臺直接將字符串拼接出來,當然可以直接將從數據中獲取的數據復制給ViewData,然后直接在前臺頁面將ViewData轉為IQuerable<Teacher>,,然后在前臺foreach遍歷顯示即可
?
(2)添加
后臺public ActionResult AddUser(){return View();}[HttpPost]public ActionResult AddUser(Teacher teacher){//添加數據teacher.Birthday = DateTime.Now;dbContext.Teacher.Add(teacher);int count = dbContext.SaveChanges();if (count > 0){return RedirectToAction("Index");}else{return Content("添加失敗!");}}前臺 <html> <head><meta name="viewport" content="width=device-width" /><title>AddUser</title> </head> <body><div><form action="/Home/AddUser" method="post">登錄名:<input type="text" name="LoginId"><br>登錄密碼:<input type="password" name="LoginPwd" /><br>姓名:<input type="text" name="TeacherName"><br>性別:<input type="text" name="Sex"><br>用戶狀態:<input type="text" name="UserStateId"><br><input type="submit" value="添加"></form></div> </body> </html>?(3)修改
后臺public ActionResult Update(int id){//獲取取數據Teacher teacher = dbContext.Teacher.FirstOrDefault(t => t.TeacherId == id);ViewData["teacherInfo"] = teacher;return View();}[HttpPost]public ActionResult Update(Teacher teacher){teacher.Birthday = DateTime.Now;dbContext.Entry<Teacher>(teacher).State = EntityState.Modified;//完成映射并且將內存數據庫中的數據處理好int count = dbContext.SaveChanges();if (count > 0){return Redirect("/Home/Index");}else{return Content("修改失敗");}}前臺 @{Layout = null; }<!DOCTYPE HTML><html><head><meta name="viewport" content="width=device-width" /><title>Update</title></head><body>@{ MVCCRUD.Models.Teacher teacher = ViewData["teacherInfo"] as MVCCRUD.Models.Teacher; }<div><form action="/Home/Update" method="post"><input type="hidden" name="teacherId" value="@teacher.TeacherId">登錄名:<input type="text" name="LoginId" value="@teacher.LoginId"><br>登錄密碼:<input type="password" name="LoginPwd" value="@teacher.LoginPwd" /><br>姓名:<input type="text" name="TeacherName" value="@teacher.TeacherName"><br>性別:<input type="text" name="Sex" value="@teacher.Sex"><br>用戶狀態:<input type="text" name="UserStateId" value="@teacher.UserStateId"><br><input type="submit" value="修改"></form></div></body> </html>?(4)刪除
后臺:public ActionResult Delete(int id){ Teacher teacher=dbContext.Teacher.Find(id);dbContext.Teacher.Remove(teacher);int count =dbContext.SaveChanges();if (count > 0){return Redirect("/Home/Index");}else {return Content("刪除失敗");}}前臺: Js 代碼寫在了展示頁面?3.結尾之言
以上只是簡單的實現了CRUD功能,僅僅是一個演示作用,MVC其實已經做好了以上的CRUD操作,也就是在添加控制器的時候,可以選擇添加帶有讀寫操作的控制器,MVC已經將讀寫的前后臺程序全部已經寫好了。我選擇的空的MVC控制器,所以增刪改查都得自己添加,包括后天的邏輯得自己寫。
?
轉載于:https://www.cnblogs.com/XZhao/p/6617657.html
總結
以上是生活随笔為你收集整理的MVC学习之简单的CRUD的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 天津市王顶堤红旗农贸市场有卖锅具的吗
- 下一篇: 字符串搜索