亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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

效果如下:

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频免费| 日韩av一区在线观看| …久久精品99久久香蕉国产| 亚洲精选在线观看| 在线观看欧美日韩| 欧美日韩免费在线观看| 91国内免费在线视频| 欧美高清无遮挡| 国产精品爱久久久久久久| 欧美亚洲国产视频| 亚洲国产一区自拍| 精品久久久av| 日韩久久午夜影院| 欧美日韩国产综合视频在线观看中文| 国产成人精品免费久久久久| 国外成人在线直播| 国产精品久久久久av免费| 国产不卡av在线免费观看| 日韩中文在线视频| 2018中文字幕一区二区三区| 亚洲视频精品在线| 中文字幕av日韩| 日韩中文娱乐网| 亚洲深夜福利在线| 欧美日韩亚洲天堂| 欧美激情小视频| 亚洲人精选亚洲人成在线| 国产成人黄色av| 亚洲国内精品在线| 成人www视频在线观看| 日韩精品视频观看| 日韩中文字幕在线免费观看| 国产精品吊钟奶在线| 亚洲色图综合网| 欧美在线影院在线视频| 国产精品视频区1| 国产在线视频一区| 97av在线视频| 黑人欧美xxxx| 欧美肥婆姓交大片| 国产精品人成电影在线观看| 91精品国产电影| 日韩黄色在线免费观看| 秋霞午夜一区二区| 亚洲精品www久久久久久广东| 2021国产精品视频| 国产激情综合五月久久| 欧美激情中文字幕在线| 欧美另类老女人| 蜜月aⅴ免费一区二区三区| 欧美日韩亚洲一区二| 欧洲成人在线视频| 狠狠综合久久av一区二区小说| 欧美日韩中文在线| 久久久久久国产免费| 欧美日韩免费区域视频在线观看| 国产精品视频久久久| 成人444kkkk在线观看| 亚洲a级在线播放观看| 亚洲自拍偷拍色图| 国产日韩欧美在线| 亚洲精品99久久久久| 日韩精品日韩在线观看| 日韩av综合网站| 欧美久久久精品| 2020欧美日韩在线视频| 国产精品美女主播| 一区二区三区四区精品| 国产亚洲人成网站在线观看| 日韩中文字幕视频在线| 97在线免费观看视频| 91精品国产综合久久香蕉最新版| 欧美日韩另类字幕中文| 色婷婷av一区二区三区在线观看| 亚洲va久久久噜噜噜久久天堂| 啪一啪鲁一鲁2019在线视频| 日韩av资源在线播放| 美女福利精品视频| 国产a∨精品一区二区三区不卡| 久久婷婷国产麻豆91天堂| 97av视频在线| 日韩欧美国产中文字幕| 国产在线观看不卡| 亚洲电影免费在线观看| xxxxxxxxx欧美| 91超碰中文字幕久久精品| 日韩欧美aⅴ综合网站发布| 亚洲精品www久久久久久广东| 成人国产精品av| 91精品国产高清久久久久久久久| 欧美麻豆久久久久久中文| 午夜免费在线观看精品视频| 久久久亚洲欧洲日产国码aⅴ| 久久久精品视频在线观看| 国产精品欧美一区二区| 日韩美女中文字幕| 亚洲乱码国产乱码精品精天堂| 丝袜情趣国产精品| 国产午夜精品全部视频播放| 欧美另类第一页| 亚洲精品99久久久久中文字幕| 久久频这里精品99香蕉| 国产精品久久久久久久7电影| 亚洲色图第一页| 亚洲国产精品热久久| 日韩中文在线中文网在线观看| 国产精品国语对白| 亚洲欧美中文日韩在线v日本| 国产精品白嫩美女在线观看| 欧美激情videos| 欧美最猛黑人xxxx黑人猛叫黄| 精品国产91久久久久久老师| 美女少妇精品视频| 91极品视频在线| 日韩精品中文字幕有码专区| 欧美一级淫片videoshd| 国产亚洲精品一区二555| 日韩在线小视频| 亚洲电影免费观看高清完整版在线观看| 久久成人这里只有精品| 91久久久精品| 日韩精品在线观看网站| 91在线观看免费| 成人欧美一区二区三区在线湿哒哒| 在线观看视频亚洲| 国产精品久久久久久久久免费看| 国产视频自拍一区| 欧美日韩国产丝袜另类| 欧美亚洲国产视频| 欧美性高跟鞋xxxxhd| 欧美在线亚洲一区| 欧美国产精品va在线观看| 91精品久久久久久久久久入口| 夜色77av精品影院| 成人福利在线观看| 成人黄色免费片| 欧美激情亚洲精品| 久久深夜福利免费观看| 亚洲国产一区二区三区在线观看| 中文字幕久精品免费视频| 91在线无精精品一区二区| 亚洲一区www| 欧美午夜片在线免费观看| 国产精品网红直播| 欧美成人剧情片在线观看| 国产一区二区三区欧美| 91精品国产高清久久久久久久久| 日本久久精品视频| 欧美激情亚洲精品| 亚洲精品wwwww| 日韩欧美亚洲综合| 国产在线拍偷自揄拍精品| 国产亚洲精品美女久久久久| 九九视频直播综合网| www日韩中文字幕在线看| 2019中文字幕在线免费观看| 日本欧美精品在线| 日韩av在线不卡| 亚洲精品www久久久| 国产一区二区三区三区在线观看| 国产精品一区二区三区成人| 亚洲国产精品久久91精品| 欧美激情精品久久久久久蜜臀| 日产精品久久久一区二区福利|