中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

愛上MVC3系列~將(jiang)公用的模塊提(ti)到PartialView

回到目錄

事實(shi)(shi)(shi)是這(zhe)(zhe)(zhe)(zhe)樣(yang)的(de)(de)(de),這(zhe)(zhe)(zhe)(zhe)個項目它有(you)產品,用戶(hu)(hu),用戶(hu)(hu)要(yao)買產品,這(zhe)(zhe)(zhe)(zhe)時產生(sheng)了(le)訂單,而這(zhe)(zhe)(zhe)(zhe)三(san)個對象(xiang)(xiang)都有(you)被評論的(de)(de)(de)功(gong)能(neng),這(zhe)(zhe)(zhe)(zhe)時評論對象(xiang)(xiang)Review就產生(sheng)了(le),我(wo)(wo)(wo)們要(yao)設計一(yi)(yi)個視圖,它來實(shi)(shi)(shi)現對三(san)個對象(xiang)(xiang)的(de)(de)(de)評論功(gong)能(neng),沒(mei)有(you)人會希望同(tong)樣(yang)的(de)(de)(de)功(gong)能(neng)被重復的(de)(de)(de)開發,相同(tong)的(de)(de)(de)代碼出現的(de)(de)(de)不同(tong)的(de)(de)(de)地方,這(zhe)(zhe)(zhe)(zhe)當然也違背了(le)DRY原則,所以,我(wo)(wo)(wo)們需要(yao)抽(chou)象(xiang)(xiang),我(wo)(wo)(wo)們需要(yao)封裝,我(wo)(wo)(wo)們需要(yao)對問題進行面(mian)向對象(xiang)(xiang)的(de)(de)(de)分析. 第一(yi)(yi)部(bu):將對象(xiang)(xiang)抽(chou)象(xiang)(xiang)出來,找(zhao)來不變的(de)(de)(de)與變化的(de)(de)(de)屬性 product,user,order共同(tong)作用于reviews,我(wo)(wo)(wo)們來看(kan)一(yi)(yi)下(xia)review的(de)(de)(de)實(shi)(shi)(shi)體結構

 

 1     /// <summary>
 2     /// 評論(lun)對象
 3     /// </summary>
 4     public class Review
 5     {
 6         public long ID { get; set; }
 7         /// <summary>
 8         /// 被評論對象的類型
 9         /// </summary>
10         public int ObjType { get; set; }
11         /// <summary>
12         /// 被評論對象(xiang)的(de)ID
13         /// </summary>
14         public long ObjID { get; set; }
15         [Required]
16         public string Title { get; set; }
17         [Required]
18         public string Content { get; set; }
19         [Required]
20         public DateTime CreateDate { get; set; }
21     }

 

1     /// <summary>
2     /// 系統主要對象(xiang)的類(lei)型(xing)
3     /// </summary>
4     public enum ObjectType
5     {
6         User,
7         Product,
8         Order
9     }

 

  而事實上(shang),除了(le)ObjType與ObjID之外,其它屬性對于三大對象來(lai)說都是(shi)相(xiang)同的,這時,我們(men)可(ke)給在設(she)計(ji)視圖時,將objtype與objid以參數的形式告(gao)訴review,代(dai)碼如下(xia): 

 1         /// <summary>
 2         /// 評論(lun)公用視圖
 3         /// </summary>
 4         /// <returns></returns>
 5         public ActionResult Review(int? objID, int? objType)
 6         {
 7             return View(new Review
 8             {
 9                 ObjID = objID ?? 0,
10                 ObjType = objType ?? 1,
11                 Content = "",
12                 Title = "",
13             });
14         }

 

最后通過提交(jiao)表單將(jiang)objid和objtype的(de)值(zhi)post到實體(ti)中(zhong),然后根據objtype來確實操作完成(cheng)后頁面所重定向的(de)地址. 代碼如下(xia): 

 1         [HttpPost]
 2         public ActionResult Review(Review entity)
 3         {
 4             if (ModelState.IsValid)
 5             {
 6                 //數據操(cao)作(zuo)邏輯
 7                 //code...
 8                 switch (entity.ObjType)
 9                 {
10                     case (int)ObjectType.User:
11                         return RedirectToAction("Index", "User", new { id = entity.ObjID });
12                     case (int)ObjectType.Product:
13                         return RedirectToAction("Index", "Product", new { id = entity.ObjID });
14                     case (int)ObjectType.Order:
15                         return RedirectToAction("Index", "Order", new { id = entity.ObjID });
16                     default:
17                         break;
18                 }
19             }
20             else
21                 ModelState.AddModelError("", "請認真(zhen)填(tian)寫...");
22             return View();
23         }

 

View的(de)(de)代碼就不(bu)在這(zhe)里展示(shi)了(le)(le),事(shi)實上,我(wo)的(de)(de)目的(de)(de)不(bu)是(shi)(shi)代碼,不(bu)是(shi)(shi)業務(wu),而是(shi)(shi)面(mian)(mian)向對象(xiang)的(de)(de)思想(xiang),通過這(zhe)個(ge)業務(wu),而我(wo)自己(ji)對面(mian)(mian)向對象(xiang)有(you)(you)了(le)(le)新的(de)(de)認識(shi),有(you)(you)時(shi)解決問題的(de)(de)方法(fa)(fa)可能有(you)(you)很多,但我(wo)們是(shi)(shi)否(fou)(fou)找到(dao)(dao)的(de)(de)最佳(jia)的(de)(de)方法(fa)(fa)呢(ni)? 有(you)(you)時(shi),我(wo)們在重復的(de)(de)做一件事(shi),但是(shi)(shi)否(fou)(fou)自己(ji)意識(shi)到(dao)(dao)了(le)(le)呢(ni)?又是(shi)(shi)否(fou)(fou)意識(shi)到(dao)(dao)了(le)(le)而去主動尋找更好的(de)(de)方法(fa)(fa)呢(ni)?這(zhe)些,我(wo)希望大家的(de)(de)回答都是(shi)(shi)"是(shi)(shi),我(wo)做到(dao)(dao)了(le)(le)",呵(he)呵(he).祝您晚安.

回到目錄

posted @ 2012-12-03 23:10  張占嶺  閱讀(1527)  評論(3)    收藏  舉報