千家信息网

ASP.NET MVC的准备工作有哪些

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,本篇文章给大家分享的是有关ASP.NET MVC的准备工作有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。配置环境如果您还没有安装a
千家信息网最后更新 2024年11月27日ASP.NET MVC的准备工作有哪些

本篇文章给大家分享的是有关ASP.NET MVC的准备工作有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

配置环境

如果您还没有安装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  {      ///      /// 分类实体类      ///      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  {      ///      /// 公告实体类      ///      public class AnnounceInfo      {          public int ID { get; set; }          public string Title { get; set; }          public string Content { get; set; }          public int Category { get; set; }      }  }

接下来,我们将定义两个接口,分别是公告类别服务和公告服务必须实现的接口。这两个接口放在Interfaces下。

ICategoryService.cs:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  using MVCDemo.Models.Entities;   namespace MVCDemo.Models.Interfaces  {      ///      /// 分类服务组件接口      ///      public interface ICategoryService      {          ///          /// 添加分类          ///          ///          void Add(CategoryInfo category);           ///          /// 修改分类名称          ///          ///          ///          void ChangeName(int id,string name);           ///          /// 删除分类          ///          ///          void Remove(int id);           ///          /// 取得某个分类详细信息          ///          ///          ///          CategoryInfo GetDetail(int id);           ///          /// 取得所有分类          ///          ///          List GetAll();      }  }

IAnnounceService.cs

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  using MVCDemo.Models.Entities;   namespace MVCDemo.Models.Interfaces  {      ///      /// 公告服务组件接口      ///      public interface IAnnounceService      {          ///          /// 发布公告          ///          ///          void Release(AnnounceInfo announce);           ///          /// 修改公告信息          ///          ///          void Notify(AnnounceInfo announce);           ///          /// 删除公告          ///          ///          void Remove(int id);           ///          /// 取得公告详细内容          ///          ///          ///          AnnounceInfo GetDetail(int id);           ///          /// 取得某个分类下的所有公告          ///          ///          ///          List GetByCategory(CategoryInfo category);      }  }

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

MockCategoryService.cs:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using MVCDemo.Models.Interfaces;  using MVCDemo.Models.Entities;   namespace MVCDemo.Models.MockModels  {      ///      /// "欺骗"服务组件,用于模拟分类的业务服务      ///      public class MockCategoryService : ICategoryService      {          ///          /// 添加分类          ///          ///          public void Add(CategoryInfo category)          {              return;          }           ///          /// 修改分类名称          ///          ///          ///          public void ChangeName(int id, string name)          {              return;          }           ///          /// 删除分类          ///          ///          public void Remove(int id)          {              return;          }           ///          /// 取得某个分类详细信息          ///          ///          ///          public CategoryInfo GetDetail(int id)          {              return new CategoryInfo              {                  ID = id,                  Name = "***通告",              };          }           ///          /// 取得所有分类          ///          ///          public List GetAll()          {              List categories = new List();              for (int i = 1; i <= 5; i++)              {                  CategoryInfo category = new CategoryInfo                  {                      ID = i,                      Name="通告类别"+i,                  };                   categories.Add(category);              }               return categories;          }      }  }

MockAnnounceService.cs

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using MVCDemo.Models.Interfaces;  using MVCDemo.Models.Entities;   namespace MVCDemo.Models.MockModels  {      ///      /// "欺骗"服务组件,用于模拟公告的业务服务      ///      public class MockAnnounceService : IAnnounceService      {          ///          /// 发布公告          ///          ///          public void Release(AnnounceInfo announce)          {              throw new Exception("发布公告失败了!原因?没有原因!我是业务组件,我说失败就失败!");              return;          }           ///          /// 修改公告信息          ///          ///          public void Notify(AnnounceInfo announce)          {              return;          }           ///          /// 删除公告          ///          ///          public void Remove(int id)          {              return;          }           ///          /// 取得公告详细内容          ///          ///          ///          public AnnounceInfo GetDetail(int id)          {              return new AnnounceInfo              {                  ID = id,                  Title = "第" + id + "则公告",                  Content = "全体同学明早九点集体做俯卧撑!",              };          }           ///          /// 取得某个分类下的所有公告          ///          ///          ///          public List GetByCategory(CategoryInfo category)          {              List announces = new List();              for (int i = 1; i <= 10; i++)              {                  AnnounceInfo announce = new AnnounceInfo                  {                      ID = i,                      Title = category.Name+ "的第" + i + "则公告",                      Content = "全体同学明早九点集体做俯卧撑!",                  };                   announces.Add(announce);              }               return announces;          }      }  }

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

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

ServiceBuilder.cs:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Web;  using MVCDemo.Models.Interfaces;  using MVCDemo.Models.MockModels;   namespace MVCDemo.Models  {      ///      /// 服务组件生成类,用于生成业务服务组件      ///      public sealed class ServiceBuilder      {          ///          /// 创建分类服务组件          ///          /// 分类服务组件         public static ICategoryService BuildCategoryService()          {              return new MockCategoryService();          }           ///          /// 创建公告服务组件          ///          /// 公告服务组件         public static IAnnounceService BuildAnnounceService()          {              return new MockAnnounceService();          }      }  }

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

以上就是ASP.NET MVC的准备工作有哪些,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0