自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET MVC教程(一):準(zhǔn)備工作

開發(fā) 后端
本系列文章作為一個asp.net.mvc教程的入門學(xué)習(xí),將不會長篇大論介紹其中的概念及理論,而是通過案例實踐來學(xué)習(xí)asp.net.mvc。

配置環(huán)境

如果您還沒有安裝asp.net.mvc的話,請到這里下載安裝。

下載后,按提示安裝就可以了。

新建項目

安裝完asp.net.mvc后,在VS里新建一個項目,可以看到有一個“asp.net.mvc Web Application”的選項,選擇它,新建一個項目,并命名為“MVCDemo”。

建完項目后,可以看到默認(rèn)情況下已經(jīng)建立了很多文件夾,這里簡略說一下各個文件夾的作用。

Content——存放應(yīng)用需要的一些資源文件,如圖片、CSS等。

Controllers——存放控制器類。

Models——存放業(yè)務(wù)模型組件。

Scripts——存放JavaScript腳本文件。

Views——存放視圖。

現(xiàn)在不了解一些概念沒關(guān)系,后續(xù)文章將慢慢解釋。

準(zhǔn)備工作

新建完項目后,我們要做的準(zhǔn)備工作就是建立Mock業(yè)務(wù)模型,這樣以后我們就直接使用這些“欺騙”式的業(yè)務(wù)模型進(jìn)行業(yè)務(wù)處理,而將全部關(guān)注點(diǎn)放在asp.net.mvc的學(xué)習(xí)上。

首先在Models下新建三個文件夾,分別叫做Entities、Interfaces、MockModels,分別用來存放實體類、接口及Mock業(yè)務(wù)模型。

Entities下有兩個類:CategoryInfo和AnnounceInfo,分別是公告類別和公告的實體類。具體代碼如下:

CategoryInfo.cs:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5.  
  6. namespace MVCDemo.Models.Entities  
  7. {  
  8.     ///   
  9.     /// 分類實體類  
  10.     /// 
  11.  
  12.     public class CategoryInfo  
  13.     {  
  14.         public int ID { getset; }  
  15.         public string Name { getset; }  
  16.     }  
  17. }  
  18.  

AnnounceInfo.cs:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5.  
  6. namespace MVCDemo.Models.Entities  
  7. {  
  8.     ///   
  9.     /// 公告實體類  
  10.     /// 
  11.  
  12.     public class AnnounceInfo  
  13.     {  
  14.         public int ID { getset; }  
  15.         public string Title { getset; }  
  16.         public string Content { getset; }  
  17.         public int Category { getset; }  
  18.     }  
  19. }  
  20.  

接下來,我們將定義兩個接口,分別是公告類別服務(wù)和公告服務(wù)必須實現(xiàn)的接口。這兩個接口放在Interfaces下。

ICategoryService.cs:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using MVCDemo.Models.Entities;  
  6.  
  7. namespace MVCDemo.Models.Interfaces  
  8. {  
  9.     ///   
  10.     /// 分類服務(wù)組件接口  
  11.     /// 
  12.  
  13.     public interface ICategoryService  
  14.     {  
  15.         ///   
  16.         /// 添加分類  
  17.         /// 
  18.  
  19.         ///   
  20.         void Add(CategoryInfo category);  
  21.  
  22.         ///   
  23.         /// 修改分類名稱  
  24.         /// 
  25.  
  26.         ///   
  27.         ///   
  28.         void ChangeName(int id,string name);  
  29.  
  30.         ///   
  31.         /// 刪除分類  
  32.         /// 
  33.  
  34.         ///   
  35.         void Remove(int id);  
  36.  
  37.         ///   
  38.         /// 取得某個分類詳細(xì)信息  
  39.         /// 
  40.  
  41.         ///   
  42.         ///   
  43.         CategoryInfo GetDetail(int id);  
  44.  
  45.         ///   
  46.         /// 取得所有分類  
  47.         /// 
  48.  
  49.         ///   
  50.         List GetAll();  
  51.     }  
  52. }  
  53.  

IAnnounceService.cs

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. using MVCDemo.Models.Entities;  
  6.  
  7. namespace MVCDemo.Models.Interfaces  
  8. {  
  9.     ///   
  10.     /// 公告服務(wù)組件接口  
  11.     /// 
  12.  
  13.     public interface IAnnounceService  
  14.     {  
  15.         ///   
  16.         /// 發(fā)布公告  
  17.         /// 
  18.  
  19.         ///   
  20.         void Release(AnnounceInfo announce);  
  21.  
  22.         ///   
  23.         /// 修改公告信息  
  24.         /// 
  25.  
  26.         ///   
  27.         void Notify(AnnounceInfo announce);  
  28.  
  29.         ///   
  30.         /// 刪除公告  
  31.         /// 
  32.  
  33.         ///   
  34.         void Remove(int id);  
  35.  
  36.         ///   
  37.         /// 取得公告詳細(xì)內(nèi)容  
  38.         /// 
  39.  
  40.         ///   
  41.         ///   
  42.         AnnounceInfo GetDetail(int id);  
  43.  
  44.         ///   
  45.         /// 取得某個分類下的所有公告  
  46.         /// 
  47.  
  48.         ///   
  49.         ///   
  50.         List GetByCategory(CategoryInfo category);  
  51.     }  
  52. }  
  53.  

然后,我們在MockModels下建立兩個Mock業(yè)務(wù)邏輯服務(wù)模型。注意它們要各自實現(xiàn)自己的接口。

MockCategoryService.cs:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using MVCDemo.Models.Interfaces;  
  6. using MVCDemo.Models.Entities;  
  7.  
  8. namespace MVCDemo.Models.MockModels  
  9. {  
  10.     ///   
  11.     /// “欺騙”服務(wù)組件,用于模擬分類的業(yè)務(wù)服務(wù)  
  12.     /// 
  13.  
  14.     public class MockCategoryService : ICategoryService  
  15.     {  
  16.         ///   
  17.         /// 添加分類  
  18.         /// 
  19.  
  20.         ///   
  21.         public void Add(CategoryInfo category)  
  22.         {  
  23.             return;  
  24.         }  
  25.  
  26.         ///   
  27.         /// 修改分類名稱  
  28.         /// 
  29.  
  30.         ///   
  31.         ///   
  32.         public void ChangeName(int id, string name)  
  33.         {  
  34.             return;  
  35.         }  
  36.  
  37.         ///   
  38.         /// 刪除分類  
  39.         /// 
  40.  
  41.         ///   
  42.         public void Remove(int id)  
  43.         {  
  44.             return;  
  45.         }  
  46.  
  47.         ///   
  48.         /// 取得某個分類詳細(xì)信息  
  49.         /// 
  50.  
  51.         ///   
  52.         ///   
  53.         public CategoryInfo GetDetail(int id)  
  54.         {  
  55.             return new CategoryInfo  
  56.             {  
  57.                 ID = id,  
  58.                 Name = "***通告",  
  59.             };  
  60.         }  
  61.  
  62.         ///   
  63.         /// 取得所有分類  
  64.         /// 
  65.  
  66.         ///   
  67.         public List GetAll()  
  68.         {  
  69.             List categories = new List();  
  70.             for (int i = 1; i <= 5; i++)  
  71.             {  
  72.                 CategoryInfo category = new CategoryInfo  
  73.                 {  
  74.                     ID = i,  
  75.                     Name="通告類別"+i,  
  76.                 };  
  77.  
  78.                 categories.Add(category);  
  79.             }  
  80.  
  81.             return categories;  
  82.         }  
  83.     }  
  84. }  
  85.  

MockAnnounceService.cs

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using MVCDemo.Models.Interfaces;  
  6. using MVCDemo.Models.Entities;  
  7.  
  8. namespace MVCDemo.Models.MockModels  
  9. {  
  10.     ///   
  11.     /// “欺騙”服務(wù)組件,用于模擬公告的業(yè)務(wù)服務(wù)  
  12.     /// 
  13.  
  14.     public class MockAnnounceService : IAnnounceService  
  15.     {  
  16.         ///   
  17.         /// 發(fā)布公告  
  18.         /// 
  19.  
  20.         ///   
  21.         public void Release(AnnounceInfo announce)  
  22.         {  
  23.             throw new Exception("發(fā)布公告失敗了!原因?沒有原因!我是業(yè)務(wù)組件,我說失敗就失?。?);  
  24.             return;  
  25.         }  
  26.  
  27.         ///   
  28.         /// 修改公告信息  
  29.         /// 
  30.  
  31.         ///   
  32.         public void Notify(AnnounceInfo announce)  
  33.         {  
  34.             return;  
  35.         }  
  36.  
  37.         ///   
  38.         /// 刪除公告  
  39.         /// 
  40.  
  41.         ///   
  42.         public void Remove(int id)  
  43.         {  
  44.             return;  
  45.         }  
  46.  
  47.         ///   
  48.         /// 取得公告詳細(xì)內(nèi)容  
  49.         /// 
  50.  
  51.         ///   
  52.         ///   
  53.         public AnnounceInfo GetDetail(int id)  
  54.         {  
  55.             return new AnnounceInfo  
  56.             {  
  57.                 ID = id,  
  58.                 Title = "第" + id + "則公告",  
  59.                 Content = "全體同學(xué)明早九點(diǎn)集體做俯臥撐!",  
  60.             };  
  61.         }  
  62.  
  63.         ///   
  64.         /// 取得某個分類下的所有公告  
  65.         /// 
  66.  
  67.         ///   
  68.         ///   
  69.         public List GetByCategory(CategoryInfo category)  
  70.         {  
  71.             List announces = new List();  
  72.             for (int i = 1; i <= 10; i++)  
  73.             {  
  74.                 AnnounceInfo announce = new AnnounceInfo  
  75.                 {  
  76.                     ID = i,  
  77.                     Title = category.Name+ "的第" + i + "則公告",  
  78.                     Content = "全體同學(xué)明早九點(diǎn)集體做俯臥撐!",  
  79.                 };  
  80.  
  81.                 announces.Add(announce);  
  82.             }  
  83.  
  84.             return announces;  
  85.         }  
  86.     }  
  87. }  
  88.  

可以看到,這兩個類并沒有訪問數(shù)據(jù)庫,也沒有實現(xiàn)真正的業(yè)務(wù)邏輯,而不過是“捏造”了一些數(shù)據(jù)騙騙我們的表示層而已。

***,我們要建立一個生成業(yè)務(wù)邏輯模型的生成器,用來實現(xiàn)表示層和業(yè)務(wù)邏輯層的解耦。當(dāng)然,為了簡化復(fù)雜度,這里沒有使用依賴注入機(jī)制。下面是我們生成器的代碼,這個類是直接放在Models下的。

ServiceBuilder.cs:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using MVCDemo.Models.Interfaces;  
  6. using MVCDemo.Models.MockModels;  
  7.  
  8. namespace MVCDemo.Models  
  9. {  
  10.     ///   
  11.     /// 服務(wù)組件生成類,用于生成業(yè)務(wù)服務(wù)組件  
  12.     /// 
  13.  
  14.     public sealed class ServiceBuilder  
  15.     {  
  16.         ///   
  17.         /// 創(chuàng)建分類服務(wù)組件  
  18.         /// 
  19.  
  20.         /// 分類服務(wù)組件  
  21.         public static ICategoryService BuildCategoryService()  
  22.         {  
  23.             return new MockCategoryService();  
  24.         }  
  25.  
  26.         ///   
  27.         /// 創(chuàng)建公告服務(wù)組件  
  28.         /// 
  29.  
  30.         /// 公告服務(wù)組件  
  31.         public static IAnnounceService BuildAnnounceService()  
  32.         {  
  33.             return new MockAnnounceService();  
  34.         }  
  35.     }  
  36. }  
  37.  

OK,到這里,我們的準(zhǔn)備工作就做完了。完成這些后,系統(tǒng)的目錄結(jié)構(gòu)如下圖所示:

系統(tǒng)的目錄結(jié)構(gòu) 

在這篇文章中,我們只是講了一下這個系列文章要做什么,以及為案例做了一些準(zhǔn)備工作。從下篇開始,我們將繼續(xù)通過asp.net.mvc教程(二)介紹如何正式開始使用asp.net.mvc完成這個案例。

【編輯推薦】

  1. 淺談ASP.NET MVC框架
  2. 介紹ASP.NET MVC中的MvcAjaxPanel
  3. ASP.NET MVC框架拯救UpdatePanel
  4. 用ASP.NET MVC源代碼尋找解決方案
  5. ASP.NET MVC框架的ActionInvoker
責(zé)任編輯:book05 來源: cnblogs
相關(guān)推薦

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-31 12:43:59

ASP.NET MVC

2009-07-22 17:45:35

ASP.NET教程

2009-07-23 15:44:39

ASP.NET MVC

2009-07-22 10:09:59

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2009-07-27 12:22:03

ASP.NET和ASPASP.NET入門教程

2010-06-23 15:44:03

ASP.NET MVC

2009-07-24 11:33:12

MVC單元測試ASP.NET

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-22 13:08:55

拯救UpdatePanASP.NET MVC

2010-03-19 09:17:16

ASP.NET MVC

2011-04-15 09:20:56

ASP.NET MVC

2009-06-12 09:24:34

ASP.NET窗體ASP.NET MVC

2009-07-29 09:17:12

jQuery刪除

2009-07-23 11:33:18

2009-07-22 10:13:31

異步ActionASP.NET MVC

2009-07-22 09:11:02

Action方法ASP.NET MVC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號