麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

MVC3學習隨記一

2019-11-14 16:44:17
字體:
來源:轉載
供稿:網友

最近才接觸mvc,也是才接觸linq語法,還有EntiyFramework,個人感覺這種開發模式還是挺不錯的,隨手記點筆記,簡單做個增刪改查吧

一、實例化上下文ObjectContext:

引用空間那些就跳過了。。

db_testEntities test = new db_testEntities();

二、用linq語法從數據庫查詢數據:

使用linq語句查詢返回的數據類為IQueryable類型:

IQueryable<MvcTest.Models.T_UserInfo> list = from d in test.T_UserInfo select d;

奇怪的是,執行語句時,沒有返回數據,使用sql Server PRofiler跟蹤,并沒有對數據庫執行任何操作,網上資料說,是因為EF的延遲加載的緣故,EF具有的延遲加載和預先加載的事件,其利弊端還不是很明確,日后得好好學習,知道原因后,查詢數據代碼改為:

第一種方法:使用SQO標準查詢運算符查找所有數據列List<MvcTest.Models.T_UserInfo> list = test.T_UserInfo.ToList();第二種方法:使用linq語法查詢List<MvcTest.Models.T_UserInfo> list = (from d in test.T_UserInfo select d).ToList();

三、linq做個簡單的分頁查詢,方法如下:

 #region 獲取分頁數據和數據條數        /// <summary>        /// 獲取分頁數據和數據條數        /// </summary>        /// <param name="pageIndex">當前頁</param>        /// <param name="i">數據條數</param>        /// <returns></returns>               public IQueryable<T_UserInfo> GetPageLoad(int pageIndex, out int i)        {            IQueryable<T_UserInfo> list = (from d in test.T_UserInfo orderby d.Id select d).Skip<T_UserInfo>(5 * (pageIndex - 1))
.Take<T_UserInfo>(5); var count = from d in test.T_UserInfo select d; i = count.Count<T_UserInfo>();//記錄條數 return list; } #endregion

這里說明下:skip是在分頁在前有多少條數據,也就是在當前頁數據之前的數據總和,(跳過序列中指定數量的元素,然后返回剩余的元素。),下標是從零開始的

                 Take是指頁容量這里分為每頁顯示5條數據

四、獲取分頁數據并返回給視圖view:

 #region 查找數據列表        /// <summary>        /// 查找數據列表并分頁        /// </summary>        /// <returns></returns>        public int pageIndex=1;        public ActionResult Index()        {            string pindex = Request.Params["index"];            int pi = string.IsNullOrEmpty(pindex) ? pageIndex : int.Parse(pindex);            int s=0;            ViewData["DataList"] = GetPageLoad(pi,out s);            int dataCount = s;            int pagecount = dataCount / 5;//數據頁數            pagecount =dataCount % 5 != 0 ? pagecount += 1 : pagecount;            ViewBag.pageCount = pagecount;//頁數            ViewBag.dataCount = dataCount;//條數            ViewBag.pageindex =pi;//當前頁            return View();        }        #endregion

View視圖代碼如下:

 1 @using MvcTest.Models 2 @{ 3     Layout = null; 4 } 5  6 <!DOCTYPE html> 7  8 <html> 9 <head>10     <title>用戶列表</title>11     <style type="text/CSS">12         #tab13         {14             border:1px solid #0094ff;15             width:600px;16             margin:10px auto;17             border-collapse:collapse;18             }19          #tab th,td20             {21                border:1px solid #0094ff;22                 padding:5px;23                 }24     </style>25     <script type="text/javascript">26        function doDel(id)27         {28             if (confirm('你確定要刪除嗎?')) {29                 window.location = "Dog/del/" + id;30                 31             }32         }33 34         function page(sta, pageIndex, pageCount) {35             switch (sta) {36                 case "index":37                     38                     window.location = "?index=1";39                     break;40                 case "prev":41                     pageIndex = pageIndex > 1 ? parseInt(pageIndex - 1, 10) : pageIndex42                     window.location = "?index=" + pageIndex;43                     break;44                 case "next":45                     pageIndex = pageIndex < pageCount ? parseInt(pageIndex + 1, 10) : pageIndex;46                     window.location = "?index=" + pageIndex;47                     break;48                 case "last":49                     window.location = "?index="+pageCount;50                     break;51                     52             }53         }54 55         function pageSta(pageIndex, sta) { 56         switch(sta){}57         58         }59     </script>60     61 </head>62 <body>63     <div>64         @{ int i = 0;}65     <table id="tab">66     <tr><th>編號</th><th>用戶名</th><th>用戶類型</th><th>用戶性別</th><th>操作&nbsp;&nbsp;<a href="Dog/Add">新增</a></th></tr>67         @foreach (T_UserInfo u in ViewData["DataList"] as IQueryable<T_UserInfo>)68         {69             i += 1;70             <tr align="center">71             <td>@i</td>72             <td>@u.UserName</td><td>@u.Name</td><td>@u.Gender</td>73             <td><a href="Dog/Edit/@u.Id">修改</a>&nbsp;&nbsp;74             <a href="Javascript:doDel(@u.Id)">刪除</a></td>75             </tr>76         }77         <tr><td colspan="5" align="center">78         共有 @ViewBag.dataCount 條數據&nbsp;&nbsp;當前 @ViewBag.pageIndex/ @ViewBag.pageCount 頁79         <a href="javascript:;" onclick="page('index',@ViewBag.pageIndex,@ViewBag.pageCount)">首頁</a>&nbsp;&nbsp;80         <a href="javascript:;" onclick="page('prev',@ViewBag.pageIndex,@ViewBag.pageCount)">上一頁</a>&nbsp;&nbsp;81         <a href="javascript:;" onclick="page('next',@ViewBag.pageIndex,@ViewBag.pageCount)">下一頁</a>&nbsp;&nbsp;82         <a href="javascript:;" onclick="page('last',@ViewBag.pageIndex,@ViewBag.pageCount)">尾頁</a>&nbsp;&nbsp;83         </td></tr>84         </table>85             86     </div>87 </body>88 </html>
View Code

本頁面包括增刪改操作,效果圖如下:

五、添加新數據:

#region 添加數據        /// <summary>        /// 添加數據        /// </summary>        /// <param name="u"></param>        /// <returns></returns>        [HttpPost]        public ActionResult Add(T_UserInfo u)        {   
//方法一:
//T_UserInfo t = new T_UserInfo //{ // Name = u.Name, // UserName = u.UserName, // Gender = u.Gender, // PassWord = "123456" //}; ////獲取提交的數據放到實體中 //test.T_UserInfo.Attach(t); ////修改實體的狀態為添加 //test.ObjectStateManager.ChangeObjectState(t, System.Data.EntityState.Added); ////保存到數據庫 //test.SaveChanges();
//方法二:
ObjectSet<T_UserInfo> user = test.CreateObjectSet<T_UserInfo>(); var newUser= user.CreateObject(); newUser.Name = u.Name; newUser.UserName = u.UserName; newUser.Gender = u.Gender; newUser.PassWord ="123456"; user.AddObject(newUser); test.SaveChanges(); return RedirectToAction("Index", "Dog"); } #endregion

這里提供有兩種方法,其實獲取表單傳過來的數據,可以有好幾種方法,這里是傳入一個實體

前臺代碼如下:

 1 @{ 2     Layout = null; 3 } 4 <!DOCTYPE html> 5 <html> 6 <head> 7     <script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script> 8     <script src="../../Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"></script> 9     <title>添加用戶</title>10     <style type="text/css">11         #tab12         {13             border:1px solid #0094ff;14             width:600px;15             margin:10px auto;16             border-collapse:collapse;17             }18          #tab th,td19             {20                border:1px solid #0094ff;21                 padding:5px;22                 }23     </style>24 </head>25 <body>26 @*@using(Html.BeginForm("Add","Dog",FormMethod.Post)){*@27 <form id="from1" action="/Dog/Add" method="post">28     <table id="tab">29     <tr><td colspan="3" align="center">添加用戶</td></tr>30     <tr><td width="">用戶名</td><td><input name="username" /></td><td></td></tr>31     <tr><td>用戶類型</td><td><select name="name">32     <option value="管理員">管理員</option>33     <option value="用戶">用戶</option>34     <option value="普通會員">普通會員</option>35     </select></td><td></td></tr>36     <tr><td>性別</td><td>37     <select name="gender">38     <option value="">男</option>39     <option value="">女</option>40     </select>41     </td><td></td></tr>42     <tr><td colspan="3"><input type="submit" value="添加" />&nbsp;&nbsp;<input type="button" value="取消" /></td></tr>43     </table>44     </form>45    @*}*@46 </body>47 </html>
View Code

六、刪除操作:

 1  #region 刪除操作 2         /// <summary> 3         /// 刪除操作 4         /// </summary> 5         /// <param name="id"></param> 6         /// <returns></returns> 7         public ActionResult Del(int id) 8         { 9             try10             {11                 //方法一:12                 //創建要刪除的對象13                 //T_UserInfo u = new T_UserInfo();14                 //u.Id = id;15                 //將對象存放到EF管理容器中16                 //test.T_UserInfo.Attach(u);17                 //將對像的狀態改為刪除狀態18                 //test.T_UserInfo.DeleteObject(u);19                 //更新到數據庫 20                // test.SaveChanges();21                 //方法二:22                 ObjectSet<T_UserInfo> t = test.CreateObjectSet<T_UserInfo>();23                 T_UserInfo tu = t.Where("it.Id=@id", new ObjectParameter("id",id)).First();24                 t.DeleteObject(tu);25                 test.SaveChanges();26                 return RedirectToAction("Index", "Dog");27             }28             catch (Exception ex)29             {30 31                 return Content("刪除出錯" + ex.Message);32             }33         } 34         #endregion
View Code

同樣使用兩種方法都可行。

七、修改操作:

首先要顯示要修改的數據:

 1 #region 顯示修改數據 2         public ActionResult Edit(int id) 3         { 4             //根據Id查找要修改的數據 5             T_UserInfo user = (from u in test.T_UserInfo where u.Id == id select u).FirstOrDefault(); 6             //將查詢到的數據返回給view viewBag,ViewData 7             //*可以再加載視圖時將數據傳給視圖上名為model的屬性 8             //下拉列表框 9             List<SelectListItem> list = new List<SelectListItem>() {10                 new SelectListItem { Value = "管理員", Text = "管理員"},11                 new SelectListItem { Value = "普通會員", Text = "普通會員"},12                 new SelectListItem { Value = "用戶", Text = "用戶"}13             };14             //SelectListItem li = new SelectListItem { Value = "管理員", Text = "管理員"};15             ViewBag.select = list;16             return View(user);17         } 18     #endregion
View Code

接下來是修改:

 1  #region 修改操作 2         /// <summary> 3         /// 修改操作 4         /// </summary> 5         /// <param name="u">實體類</param> 6         /// <returns></returns> 7         [HttpPost] 8         public ActionResult Edit(T_UserInfo u) 9         {10             try11             {12                 //test.T_UserInfo.Attach(u);//將實體附加到實體上下文13                 //手動修改實體的狀態14                 //修改整個實體屬性15                 //test.ObjectStateManager.ChangeObjectState(u,System.Data.EntityState.Modified);16                 //保存回數據庫17                 //***********************************************************************//18                 //只修改相應屬性值19                 T_UserInfo t = test.T_UserInfo.FirstOrDefault(a=>a.Id==u.Id);//找到實體20                 if (t !=null)21                 {22                     t.Name = u.Name;//修改用戶類型23                     t.UserName = u.UserName;//修改用戶名稱24                     t.Gender = u.Gender;//修改性別25                     test.SaveChanges();26                 }27                 return RedirectToAction("Index", "Dog");28             }29             catch (Exception ex)30             {31 32                 return Content("修改失敗" + ex.Message);33             }34         } 35         #endregion
View Code

效果如下:

 本人新菜鳥,如有不對的地方,歡迎大俠們指正,不喜勿噴。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄在线观看 | 国产亚洲精彩视频 | 蜜桃网站免费 | 久久国产精品区 | 国产91精品久久久 | 久草手机视频在线观看 | 久久av免费| 狠狠久久伊人中文字幕 | 国产精品久久77777 | 色七七久久影院 | 欧美性videofree精品 | 久久不射电影 | 成人在线视频一区 | 亚洲一区二区三区视频 | wwwxxx国产| japanese hot milf free av | 国产精品久久久久影院老司 | 美国一级免费视频 | 欧美日韩在线免费观看 | 国产深夜福利视频在线播放 | 国产精品视频亚洲 | 国产一区二区三区精品在线观看 | 看免费毛片| 日本不卡二区 | 亚洲欧美不卡视频 | 国产成人精品一区二区三区电影 | 成人在线观看网 | 久久国产精品电影 | 成人国产精品久久久 | 鲁丝片一区二区三区免费入口 | 中文字幕 亚洲一区 | 九九福利视频 | 亚洲成人高清电影 | 欧美视频不卡 | 又黄又爽又色无遮挡免费 | 视频一区二区在线播放 | av在线网站观看 | 日本欧美一区二区 | 精品中文字幕在线观看 | 鲁丝片一区二区三区免费入口 | 国产精品久久久乱弄 |