ASP.NET MVC实例:开发前准备
作者:bea
在正式开始学习ASP.NET MVC之前,我们先来学习下使用ASP.NET MVC模式开发前的一些准备工作。 配置环境 如果您还没有安装ASP.NET MVC的话,请到这里下载安装。 下载后,按提示安装就可以了。 新建项目 安装完ASP.NET MVC后,在VS里新建一个项目,可以看到有一个“ASP.NET MVC Web Application”的选项,选择它,新建一个项目,并命名为“MVCDemo”。 建完项目后,可以看到默认情况下已经建立了很多文件夹,这里简
在正式开始学习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代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
namespaceMVCDemo.Models.Entities
{
///
///分类实体类
///
publicclassCategoryInfo
{
publicintID{get;set;}
publicstringName{get;set;}
}
}
AnnounceInfo.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
namespaceMVCDemo.Models.Entities
{
///
///公告实体类
///
publicclassAnnounceInfo
{
publicintID{get;set;}
publicstringTitle{get;set;}
publicstringContent{get;set;}
publicintCategory{get;set;}
}
}
接下来,我们将定义两个接口,分别是公告类别服务和公告服务必须实现的接口。这两个接口放在Interfaces下。
ICategoryService.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingMVCDemo.Models.Entities;
namespaceMVCDemo.Models.Interfaces
{
///
///分类服务组件接口
///
publicinterfaceICategoryService
{
///
///添加分类
///
///
voidAdd(CategoryInfocategory);
///
///修改分类名称
///
///
///
voidChangeName(intid,stringname);
///
///删除分类
///
///
voidRemove(intid);
///
///取得某个分类详细信息
///
///
///
CategoryInfoGetDetail(intid);
///
///取得所有分类
///
///
ListGetAll();
}
}
IAnnounceService.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingMVCDemo.Models.Entities;
namespaceMVCDemo.Models.Interfaces
{
///
///公告服务组件接口
///
publicinterfaceIAnnounceService
{
///
///发布公告
///
///
voidRelease(AnnounceInfoannounce);
///
///修改公告信息
///
///
voidNotify(AnnounceInfoannounce);
///
///删除公告
///
///
voidRemove(intid);
///
///取得公告详细内容
///
///
///
AnnounceInfoGetDetail(intid);
///
///取得某个分类下的所有公告
///
///
///
ListGetByCategory(CategoryInfocategory);
}
}
然后,我们在MockModels下建立两个Mock业务逻辑服务模型。注意它们要各自实现自己的接口。
MockCategoryService.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingMVCDemo.Models.Interfaces;
usingMVCDemo.Models.Entities;
namespaceMVCDemo.Models.MockModels
{
///
///“欺骗”服务组件,用于模拟分类的业务服务
///
publicclassMockCategoryService:ICategoryService
{
///
///添加分类
///
///
publicvoidAdd(CategoryInfocategory)
{
return;
}
///
///修改分类名称
///
///
///
publicvoidChangeName(intid,stringname)
{
return;
}
///
///删除分类
///
///
publicvoidRemove(intid)
{
return;
}
///
///取得某个分类详细信息
///
///
///
publicCategoryInfoGetDetail(intid)
{
returnnewCategoryInfo
{
ID=id,
Name="最新通告",
};
}
///
///取得所有分类
///
///
publicListGetAll()
{
Listcategories=newList();
for(inti=1;i
MockAnnounceService.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingMVCDemo.Models.Interfaces;
usingMVCDemo.Models.Entities;
namespaceMVCDemo.Models.MockModels
{
///
///“欺骗”服务组件,用于模拟公告的业务服务
///
publicclassMockAnnounceService:IAnnounceService
{
///
///发布公告
///
///
publicvoidRelease(AnnounceInfoannounce)
{
thrownewException("发布公告失败了!原因?没有原因!我是业务组件,我说失败就失败!");
return;
}
///
///修改公告信息
///
///
publicvoidNotify(AnnounceInfoannounce)
{
return;
}
///
///删除公告
///
///
publicvoidRemove(intid)
{
return;
}
///
///取得公告详细内容
///
///
///
publicAnnounceInfoGetDetail(intid)
{
returnnewAnnounceInfo
{
ID=id,
Title="第"+id+"则公告",
Content="全体同学明早九点集体做俯卧撑!",
};
}
///
///取得某个分类下的所有公告
///
///
///
publicListGetByCategory(CategoryInfocategory)
{
Listannounces=newList();
for(inti=1;i
可以看到,这两个类并没有访问数据库,也没有实现真正的业务逻辑,而不过是“捏造”了一些数据骗骗我们的表示层而已。
最后,我们要建立一个生成业务逻辑模型的生成器,用来实现表示层和业务逻辑层的解耦。当然,为了简化复杂度,这里没有使用依赖注入机制。下面是我们生成器的代码,这个类是直接放在Models下的。
ServiceBuilder.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingMVCDemo.Models.Interfaces;
usingMVCDemo.Models.MockModels;
namespaceMVCDemo.Models
{
///
///服务组件生成类,用于生成业务服务组件
///
publicsealedclassServiceBuilder
{
///
///创建分类服务组件
///
///分类服务组件
publicstaticICategoryServiceBuildCategoryService()
{
returnnewMockCategoryService();
}
///
///创建公告服务组件
///
///公告服务组件
publicstaticIAnnounceServiceBuildAnnounceService()
{
returnnewMockAnnounceService();
}
}
}
OK,到这里,我们的准备工作就做完了。
来自博客园,原文链接:http://www.cnblogs.com/leoo2sk/archive/2008/10/27/1320285.html 有用 | 无用
配置环境
如果您还没有安装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代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
namespaceMVCDemo.Models.Entities
{
///
///分类实体类
///
publicclassCategoryInfo
{
publicintID{get;set;}
publicstringName{get;set;}
}
}
AnnounceInfo.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
namespaceMVCDemo.Models.Entities
{
///
///公告实体类
///
publicclassAnnounceInfo
{
publicintID{get;set;}
publicstringTitle{get;set;}
publicstringContent{get;set;}
publicintCategory{get;set;}
}
}
接下来,我们将定义两个接口,分别是公告类别服务和公告服务必须实现的接口。这两个接口放在Interfaces下。
ICategoryService.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingMVCDemo.Models.Entities;
namespaceMVCDemo.Models.Interfaces
{
///
///分类服务组件接口
///
publicinterfaceICategoryService
{
///
///添加分类
///
///
voidAdd(CategoryInfocategory);
///
///修改分类名称
///
///
///
voidChangeName(intid,stringname);
///
///删除分类
///
///
voidRemove(intid);
///
///取得某个分类详细信息
///
///
///
CategoryInfoGetDetail(intid);
///
///取得所有分类
///
///
ListGetAll();
}
}
IAnnounceService.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingMVCDemo.Models.Entities;
namespaceMVCDemo.Models.Interfaces
{
///
///公告服务组件接口
///
publicinterfaceIAnnounceService
{
///
///发布公告
///
///
voidRelease(AnnounceInfoannounce);
///
///修改公告信息
///
///
voidNotify(AnnounceInfoannounce);
///
///删除公告
///
///
voidRemove(intid);
///
///取得公告详细内容
///
///
///
AnnounceInfoGetDetail(intid);
///
///取得某个分类下的所有公告
///
///
///
ListGetByCategory(CategoryInfocategory);
}
}
然后,我们在MockModels下建立两个Mock业务逻辑服务模型。注意它们要各自实现自己的接口。
MockCategoryService.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingMVCDemo.Models.Interfaces;
usingMVCDemo.Models.Entities;
namespaceMVCDemo.Models.MockModels
{
///
///“欺骗”服务组件,用于模拟分类的业务服务
///
publicclassMockCategoryService:ICategoryService
{
///
///添加分类
///
///
publicvoidAdd(CategoryInfocategory)
{
return;
}
///
///修改分类名称
///
///
///
publicvoidChangeName(intid,stringname)
{
return;
}
///
///删除分类
///
///
publicvoidRemove(intid)
{
return;
}
///
///取得某个分类详细信息
///
///
///
publicCategoryInfoGetDetail(intid)
{
returnnewCategoryInfo
{
ID=id,
Name="最新通告",
};
}
///
///取得所有分类
///
///
publicListGetAll()
{
Listcategories=newList();
for(inti=1;i
MockAnnounceService.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingMVCDemo.Models.Interfaces;
usingMVCDemo.Models.Entities;
namespaceMVCDemo.Models.MockModels
{
///
///“欺骗”服务组件,用于模拟公告的业务服务
///
publicclassMockAnnounceService:IAnnounceService
{
///
///发布公告
///
///
publicvoidRelease(AnnounceInfoannounce)
{
thrownewException("发布公告失败了!原因?没有原因!我是业务组件,我说失败就失败!");
return;
}
///
///修改公告信息
///
///
publicvoidNotify(AnnounceInfoannounce)
{
return;
}
///
///删除公告
///
///
publicvoidRemove(intid)
{
return;
}
///
///取得公告详细内容
///
///
///
publicAnnounceInfoGetDetail(intid)
{
returnnewAnnounceInfo
{
ID=id,
Title="第"+id+"则公告",
Content="全体同学明早九点集体做俯卧撑!",
};
}
///
///取得某个分类下的所有公告
///
///
///
publicListGetByCategory(CategoryInfocategory)
{
Listannounces=newList();
for(inti=1;i
可以看到,这两个类并没有访问数据库,也没有实现真正的业务逻辑,而不过是“捏造”了一些数据骗骗我们的表示层而已。
最后,我们要建立一个生成业务逻辑模型的生成器,用来实现表示层和业务逻辑层的解耦。当然,为了简化复杂度,这里没有使用依赖注入机制。下面是我们生成器的代码,这个类是直接放在Models下的。
ServiceBuilder.cs代码如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Web;
usingMVCDemo.Models.Interfaces;
usingMVCDemo.Models.MockModels;
namespaceMVCDemo.Models
{
///
///服务组件生成类,用于生成业务服务组件
///
publicsealedclassServiceBuilder
{
///
///创建分类服务组件
///
///分类服务组件
publicstaticICategoryServiceBuildCategoryService()
{
returnnewMockCategoryService();
}
///
///创建公告服务组件
///
///公告服务组件
publicstaticIAnnounceServiceBuildAnnounceService()
{
returnnewMockAnnounceService();
}
}
}
OK,到这里,我们的准备工作就做完了。
来自博客园,原文链接:http://www.cnblogs.com/leoo2sk/archive/2008/10/27/1320285.html 有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- 异常处理机制在Java中的优缺点
- java入门学习之如何快速学习Java
- Java入门学习之选择开发的工具
- 转义字符 - XML中的非法字符
- 未组织好 - XML解析错误解决办法
- 几种实现asp.net模板生成html静态页面方法
- asp.net错误提示“服务器应用程序不可用”
- C#操作XML 读XML 写XML等
- 最新编程语言排行榜已高调出现
- 使用.net裁剪网站上传的图片的方法
- 程序员该如何选择自己的编程语言
- 几种常用到的C#写文件的方法
- .NET教程WCF Helloworld入门教程
- 详细介绍C# richtextbox使用方法
- C#生成pdf文件实例代码
- C#学习之treeview组件的使用方法
- 使用C#中treeview控件方法介绍
- asp.net 2.0新增加特性详情
- ASP.NET MVC实例:建立第一个页面