现在的位置: 首页 > 综合 > 正文

第一篇:基于ASP.NET MVC2 创建第一个简单页面

2013年10月07日 ⁄ 综合 ⁄ 共 10875字 ⁄ 字号 评论关闭
 

配置环境

如果您还没有安装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:

  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. }  

 

IAnnounceService.cs

  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. }  

 

然后,我们在MockModels下建立两个Mock业务逻辑服务模型。注意它们要各自实现自己的接口。

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. 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. }  

 

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. 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. }  

 

可以看到,这两个类并没有访问数据库,也没有实现真正的业务逻辑,而不过是“捏造”了一些数据骗骗我们的表示层而已。

最后,我们要建立一个生成业务逻辑模型的生成器,用来实现表示层和业务逻辑层的解耦。当然,为了简化复杂度,这里没有使用依赖注入机制。下面是我们生成器的代码,这个类是直接放在Models下的。

  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. }  

 

OK,到这里,我们的准备工作就做完了。完成这些后,系统的目录结构如下图所示:

抱歉!评论已关闭.