亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

第一篇:基于ASP.NET MVC2 創建第一個簡單頁面

系統 1962 0

前言

ASP.NET MVC作為微軟官方的MVC解決方案,推出有一段時間了??梢哉f自動推出以來,一直廣受關注。在經歷了漫長的Preview之后,前幾天終于推出了其 beta版。并且在官方文檔中,微軟聲明最終的正式版與beta版相比不會有大的變化。所以,對于.NET平臺的開發人員來說,是時候學習ASP.NET MVC了。

本系列文章作為一個ASP.NET MVC的入門教程,將不會長篇大論介紹其中的概念及理論。而是通過案例實踐來學習ASP.NET MVC。在這系列文章中我將逐步完成一個“公告發布系統”。我的寫作策略是:先動手做,遇到需要解釋概念和理論的時候再解釋,而不是先把概念和理論解釋完再做東西。

另外,我還有幾點要說明的:

1.為了將大家的關注點充分集中在ASP.NET MVC上,這個Demo的業務處理將使用Mock的方式。即不會真正去訪問數據庫,而是虛擬一些數據。

2.本Demo將不考慮任何美工問題。

下面,讓我們一起開始ASP.NET MVC 400電話 電子公告之旅吧。在這一篇中,我們將做完所有的準備工作。

配置環境

如果您還沒有安裝ASP.NET MVC的話,請到 這里下載安裝

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

新建項目

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

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

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

Controllers——存放控制器類。

Models——存放業務模型組件。

Scripts——存放JavaScript腳本文件。

Views——存放視圖。

現在不了解一些概念沒關系,后續文章將慢慢解釋。

準備工作

新建完項目后,我們要做的準備工作就是建立Mock業務模型,這樣以后我們就直接使用這些“欺騙”式的業務模型進行業務處理,而將全部關注點放在ASP.NET MVC的學習上。

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

?

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

CategoryInfo.cs:

              using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
            
              namespace MVCDemo.Models.Entities
{
/// <summary>
/// 分類實體類
/// </summary>
public class CategoryInfo
{
public int ID { get; set; }
public string Name { get; set; }
}
}
            

AnnounceInfo.cs:

              using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
            
              namespace MVCDemo.Models.Entities
{
/// <summary>
/// 公告實體類
/// </summary>
public class AnnounceInfo
{
public int ID { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
}
            

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

ICategoryService.cs:

C#代碼 復制代碼
  1. using ?System; ??
  2. using ?System.Collections.Generic; ??
  3. using ?System.Linq; ??
  4. using ?System.Text; ??
  5. using ?MVCDemo.Models.Entities; ??
  6. namespace ?MVCDemo.Models.Interfaces ??
  7. { ??
  8. ///?<summary> ??
  9. ///?分類服務組件接口 ??
  10. ///?</summary> ??
  11. public ? interface ?ICategoryService ??
  12. { ??
  13. ///?<summary> ??
  14. ///?添加分類 ??
  15. ///?</summary> ??
  16. ///?<param?name="category"></param> ??
  17. void ?Add(CategoryInfo?category); ??
  18. ???????? ///?<summary> ??
  19. ///?修改分類名稱 ??
  20. ///?</summary> ??
  21. ///?<param?name="id"></param> ??
  22. ///?<param?name="name"></param> ??
  23. void ?ChangeName( int ?id, string ?name); ??
  24. ???????? ///?<summary> ??
  25. ///?刪除分類 ??
  26. ///?</summary> ??
  27. ///?<param?name="id"></param> ??
  28. void ?Remove( int ?id); ??
  29. ???????? ///?<summary> ??
  30. ///?取得某個分類詳細信息 ??
  31. ///?</summary> ??
  32. ///?<param?name="id"></param> ??
  33. ///?<returns></returns> ??
  34. CategoryInfo?GetDetail( int ?id); ??
  35. ???????? ///?<summary> ??
  36. ///?取得所有分類 ??
  37. ///?</summary> ??
  38. ///?<returns></returns> ??
  39. List<CategoryInfo>?GetAll(); ??
  40. } ??
  41. }??
      using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MVCDemo.Models.Entities;
namespace MVCDemo.Models.Interfaces
{
/// <summary>
/// 分類服務組件接口
/// </summary>
public interface ICategoryService
{
/// <summary>
/// 添加分類
/// </summary>
/// <param name="category"></param>
void Add(CategoryInfo category);
        /// <summary>
/// 修改分類名稱
/// </summary>
/// <param name="id"></param>
/// <param name="name"></param>
void ChangeName(int id,string name);
        /// <summary>
/// 刪除分類
/// </summary>
/// <param name="id"></param>
void Remove(int id);
        /// <summary>
/// 取得某個分類詳細信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
CategoryInfo GetDetail(int id);
        /// <summary>
/// 取得所有分類
/// </summary>
/// <returns></returns>
List<CategoryInfo> GetAll();
}
}
    
?

IAnnounceService.cs

C#代碼 復制代碼
  1. using ?System; ??
  2. using ?System.Collections.Generic; ??
  3. using ?System.Linq; ??
  4. using ?System.Text; ??
  5. using ?MVCDemo.Models.Entities; ??
  6. namespace ?MVCDemo.Models.Interfaces ??
  7. { ??
  8. ///?<summary> ??
  9. ///?公告服務組件接口 ??
  10. ///?</summary> ??
  11. public ? interface ?IAnnounceService ??
  12. { ??
  13. ///?<summary> ??
  14. ///?發布公告 ??
  15. ///?</summary> ??
  16. ///?<param?name="announce"></param> ??
  17. void ?Release(AnnounceInfo?announce); ??
  18. ???????? ///?<summary> ??
  19. ///?修改公告信息 ??
  20. ///?</summary> ??
  21. ///?<param?name="announce"></param> ??
  22. void ?Notify(AnnounceInfo?announce); ??
  23. ???????? ///?<summary> ??
  24. ///?刪除公告?(http://www.my400800.cn) ??
  25. ///?</summary> ??
  26. ///?<param?name="id"></param> ??
  27. void ?Remove( int ?id); ??
  28. ???????? ///?<summary> ??
  29. ///?取得公告詳細內容 ??
  30. ///?</summary> ??
  31. ///?<param?name="id"></param> ??
  32. ///?<returns></returns> ??
  33. AnnounceInfo?GetDetail( int ?id); ??
  34. ???????? ///?<summary> ??
  35. ///?取得某個分類下的所有公告 ??
  36. ///?</summary> ??
  37. ///?<param?name="categoryId"></param> ??
  38. ///?<returns></returns> ??
  39. List<AnnounceInfo>?GetByCategory(CategoryInfo?category); ??
  40. } ??
  41. }??
      using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MVCDemo.Models.Entities;
namespace MVCDemo.Models.Interfaces
{
/// <summary>
/// 公告服務組件接口
/// </summary>
public interface IAnnounceService
{
/// <summary>
/// 發布公告
/// </summary>
/// <param name="announce"></param>
void Release(AnnounceInfo announce);
        /// <summary>
/// 修改公告信息
/// </summary>
/// <param name="announce"></param>
void Notify(AnnounceInfo announce);
        /// <summary>
/// 刪除公告 (http://www.my400800.cn)
/// </summary>
/// <param name="id"></param>
void Remove(int id);
        /// <summary>
/// 取得公告詳細內容
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
AnnounceInfo GetDetail(int id);
        /// <summary>
/// 取得某個分類下的所有公告
/// </summary>
/// <param name="categoryId"></param>
/// <returns></returns>
List<AnnounceInfo> GetByCategory(CategoryInfo category);
}
}
    
?

然后,我們在MockModels下建立兩個Mock業務邏輯服務模型。注意它們要各自實現自己的接口。

MockCategoryService.cs:

C#代碼 復制代碼
  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. namespace ?MVCDemo.Models.MockModels ??
  8. { ??
  9. ///?<summary> ??
  10. ///?“欺騙”服務組件,用于模擬分類的業務服務 ??
  11. ///?</summary> ??
  12. public ? class ?MockCategoryService?:?ICategoryService ??
  13. { ??
  14. ///?<summary> ??
  15. ///?添加分類 ??
  16. ///?</summary> ??
  17. ///?<param?name="category"></param> ??
  18. public ? void ?Add(CategoryInfo?category) ??
  19. { ??
  20. return ; ??
  21. } ??
  22. ???????? ///?<summary> ??
  23. ///?修改分類名稱 ??
  24. ///?</summary> ??
  25. ///?<param?name="id"></param> ??
  26. ///?<param?name="name"></param> ??
  27. public ? void ?ChangeName( int ?id,? string ?name) ??
  28. { ??
  29. return ; ??
  30. } ??
  31. ???????? ///?<summary> ??
  32. ///?刪除分類 ??
  33. ///?</summary> ??
  34. ///?<param?name="id"></param> ??
  35. public ? void ?Remove( int ?id) ??
  36. { ??
  37. return ; ??
  38. } ??
  39. ???????? ///?<summary> ??
  40. ///?取得某個分類詳細信息 ??
  41. ///?</summary> ??
  42. ///?<param?name="id"></param> ??
  43. ///?<returns></returns> ??
  44. public ?CategoryInfo?GetDetail( int ?id) ??
  45. { ??
  46. return ? new ?CategoryInfo ??
  47. { ??
  48. ID?=?id, ??
  49. Name?=? "最新通告" , ??
  50. }; ??
  51. } ??
  52. ???????? ///?<summary> ??
  53. ///?取得所有分類 ??
  54. ///?</summary> ??
  55. ///?<returns></returns> ??
  56. public ?List<CategoryInfo>?GetAll() ??
  57. { ??
  58. List<CategoryInfo>?categories?=? new ?List<CategoryInfo>(); ??
  59. for ?( int ?i?=?1;?i?<=?5;?i++) ??
  60. { ??
  61. CategoryInfo?category?=? new ?CategoryInfo ??
  62. { ??
  63. ID?=?i, ??
  64. Name= "通告類別" +i, ??
  65. }; ??
  66. ????????????????categories.Add(category); ??
  67. } ??
  68. ???????????? return ?categories; ??
  69. } ??
  70. } ??
  71. }??
      using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MVCDemo.Models.Interfaces;
using MVCDemo.Models.Entities;
namespace MVCDemo.Models.MockModels
{
/// <summary>
/// “欺騙”服務組件,用于模擬分類的業務服務
/// </summary>
public class MockCategoryService : ICategoryService
{
/// <summary>
/// 添加分類
/// </summary>
/// <param name="category"></param>
public void Add(CategoryInfo category)
{
return;
}
        /// <summary>
/// 修改分類名稱
/// </summary>
/// <param name="id"></param>
/// <param name="name"></param>
public void ChangeName(int id, string name)
{
return;
}
        /// <summary>
/// 刪除分類
/// </summary>
/// <param name="id"></param>
public void Remove(int id)
{
return;
}
        /// <summary>
/// 取得某個分類詳細信息
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public CategoryInfo GetDetail(int id)
{
return new CategoryInfo
{
ID = id,
Name = "最新通告",
};
}
        /// <summary>
/// 取得所有分類
/// </summary>
/// <returns></returns>
public List<CategoryInfo> GetAll()
{
List<CategoryInfo> categories = new List<CategoryInfo>();
for (int i = 1; i <= 5; i++)
{
CategoryInfo category = new CategoryInfo
{
ID = i,
Name="通告類別"+i,
};
                categories.Add(category);
}
            return categories;
}
}
}
    
?

MockAnnounceService.cs

C#代碼 復制代碼
  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. namespace ?MVCDemo.Models.MockModels ??
  8. { ??
  9. ///?<summary> ??
  10. ///?“欺騙”服務組件,用于模擬公告的業務服務 ??
  11. ///?</summary> ??
  12. public ? class ?MockAnnounceService?:?IAnnounceService ??
  13. { ??
  14. ///?<summary> ??
  15. ///?發布公告 ??
  16. ///?</summary> ??
  17. ///?<param?name="announce"></param> ??
  18. public ? void ?Release(AnnounceInfo?announce) ??
  19. { ??
  20. return ; ??
  21. } ??
  22. ???????? ///?<summary> ??
  23. ///?修改公告信息 ??
  24. ///?</summary> ??
  25. ///?<param?name="announce"></param> ??
  26. public ? void ?Notify(AnnounceInfo?announce) ??
  27. { ??
  28. return ; ??
  29. } ??
  30. ???????? ///?<summary> ??
  31. ///?刪除公告 ??
  32. ///?</summary> ??
  33. ///?<param?name="id"></param> ??
  34. public ? void ?Remove( int ?id) ??
  35. { ??
  36. return ; ??
  37. } ??
  38. ???????? ///?<summary> ??
  39. ///?取得公告詳細內容 ??
  40. ///?</summary> ??
  41. ///?<param?name="id"></param> ??
  42. ///?<returns></returns> ??
  43. public ?AnnounceInfo?GetDetail( int ?id) ??
  44. { ??
  45. return ? new ?AnnounceInfo ??
  46. { ??
  47. ID?=?id, ??
  48. Title?=? "第" ?+?id?+? "則公告" , ??
  49. Content?=? "全體同學明早九點集體做俯臥撐!" , ??
  50. }; ??
  51. } ??
  52. ???????? ///?<summary> ??
  53. ///?取得某個分類下的所有公告 ??
  54. ///?</summary> ??
  55. ///?<param?name="categoryId"></param> ??
  56. ///?<returns></returns> ??
  57. public ?List<AnnounceInfo>?GetByCategory(CategoryInfo?category) ??
  58. { ??
  59. List<AnnounceInfo>?announces?=? new ?List<AnnounceInfo>(); ??
  60. for ?( int ?i?=?1;?i?<=?10;?i++) ??
  61. { ??
  62. AnnounceInfo?announce?=? new ?AnnounceInfo ??
  63. { ??
  64. ID?=?i, ??
  65. Title?=?category.Name+? "的第" ?+?i?+? "則公告" , ??
  66. Content?=? "全體同學明早九點集體做俯臥撐!" , ??
  67. }; ??
  68. ????????????????announces.Add(announce); ??
  69. } ??
  70. ???????????? return ?announces; ??
  71. } ??
  72. } ??
  73. }??
      using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MVCDemo.Models.Interfaces;
using MVCDemo.Models.Entities;
namespace MVCDemo.Models.MockModels
{
/// <summary>
/// “欺騙”服務組件,用于模擬公告的業務服務
/// </summary>
public class MockAnnounceService : IAnnounceService
{
/// <summary>
/// 發布公告
/// </summary>
/// <param name="announce"></param>
public void Release(AnnounceInfo announce)
{
return;
}
        /// <summary>
/// 修改公告信息
/// </summary>
/// <param name="announce"></param>
public void Notify(AnnounceInfo announce)
{
return;
}
        /// <summary>
/// 刪除公告
/// </summary>
/// <param name="id"></param>
public void Remove(int id)
{
return;
}
        /// <summary>
/// 取得公告詳細內容
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public AnnounceInfo GetDetail(int id)
{
return new AnnounceInfo
{
ID = id,
Title = "第" + id + "則公告",
Content = "全體同學明早九點集體做俯臥撐!",
};
}
        /// <summary>
/// 取得某個分類下的所有公告
/// </summary>
/// <param name="categoryId"></param>
/// <returns></returns>
public List<AnnounceInfo> GetByCategory(CategoryInfo category)
{
List<AnnounceInfo> announces = new List<AnnounceInfo>();
for (int i = 1; i <= 10; i++)
{
AnnounceInfo announce = new AnnounceInfo
{
ID = i,
Title = category.Name+ "的第" + i + "則公告",
Content = "全體同學明早九點集體做俯臥撐!",
};
                announces.Add(announce);
}
            return announces;
}
}
}
    
?

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

最后,我們要建立一個生成業務邏輯模型的生成器,用來實現表示層和業務邏輯層的解耦。當然,為了簡化復雜度,這里沒有使用依賴注入機制。下面是我們生成器的代碼,這個類是直接放在Models下的。


C#代碼 復制代碼
  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. ??
  9. namespace ?MVCDemo.Models ??
  10. { ??
  11. ///?<summary> ??
  12. ///?服務組件生成類,用于生成業務服務組件 ??
  13. ///?</summary> ??
  14. public ? sealed ? class ?ServiceBuilder ??
  15. { ??
  16. ///?<summary> ??
  17. ///?創建分類服務組件 ??
  18. ///?</summary> ??
  19. ///?<returns>分類服務組件</returns> ??
  20. public ? static ?ICategoryService?BuildCategoryService() ??
  21. { ??
  22. return ? new ?MockCategoryService(); ??
  23. } ??
  24. ??
  25. ??
  26. ???????? ///?<summary> ??
  27. ///?創建公告服務組件 ??
  28. ///?</summary> ??
  29. ///?<returns>公告服務組件</returns> ??
  30. public ? static ?IAnnounceService?BuildAnnounceService() ??
  31. { ??
  32. return ? new ?MockAnnounceService(); ??
  33. } ??
  34. } ??
  35. }??
      using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MVCDemo.Models.Interfaces;
using MVCDemo.Models.MockModels;


namespace MVCDemo.Models
{
/// <summary>
/// 服務組件生成類,用于生成業務服務組件
/// </summary>
public sealed class ServiceBuilder
{
/// <summary>
/// 創建分類服務組件
/// </summary>
/// <returns>分類服務組件</returns>
public static ICategoryService BuildCategoryService()
{
return new MockCategoryService();
}


        /// <summary>
/// 創建公告服務組件
/// </summary>
/// <returns>公告服務組件</returns>
public static IAnnounceService BuildAnnounceService()
{
return new MockAnnounceService();
}
}
}



    
?

OK,到這里,我們的準備工作就做完了。完成這些后,系統的目錄結構如下圖所示:


第一篇:基于ASP.NET MVC2 創建第一個簡單頁面
?

小結

在這篇文章中,我們只是講了一下這個系列文章要做什么,以及為案例做了一些準備工作。從下篇開始,我們將正式開始使用ASP.NET MVC完成這個案例。

第一篇:基于ASP.NET MVC2 創建第一個簡單頁面


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!??!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲精品国产字幕久久vr | 国产自精品在线 | 久久99综合 | 成年ssswww中国女人 | 97视频观看| 久久精品国产99国产 | 9久热这里只有精品视频在线观看 | 91视频香蕉视频 | 午夜大片免费男女爽爽影院久久 | 黄色片网站观看 | 国产综合久久一区二区三区 | 国产极品粉嫩福利在线观看 | 中文字幕第13亚洲另类 | 看日本黄色录像 | 六月丁香色婷婷 | 免费看人做人爱视频拍拍拍 | 在线欧美精品国产综合五月 | 日韩一区二区三区不卡视频 | 成人免费aa在线观看 | 天天干影视 | a免费网站 | 亚洲一区二区三区首页 | 国产日韩欧美综合一区二区三区 | 天天色综合5 | 国产精品一区二区不卡 | 最新日韩在线 | 亚洲精品成人7777在线观看 | 久久亚洲热 | 皮皮在线精品亚洲 | 114毛片免费观看网站 | 免费中文字幕一级毛片 | 久久综合久久久 | 成人免费国产欧美日韩你懂的 | 国产午夜亚洲精品久久999 | 老司机午夜影院 | 九九热免费 | 婷婷的久久五月综合先锋影音 | 亚洲麻豆精品 | 精品四虎免费观看国产高清 | 欧洲一区在线观看 | 久久亚洲综合中文字幕 |