对ASP.NET 的MVC 有哪些开发

2012 年 11 月 1 日6700

欢迎进入.NET社区论坛,与300万技术人员互动交流 >>进入

ASP.NET MVC作为微软官方的MVC解决方案,推出有一段时间了。可以说自动推出以来,一直广受关注。在经历了漫长的Preview之后,前几天终于推出了其有哪些版。并且在官方文档中,微软声明最终的正式版与有哪些版相比不会有大的变化。健康知识平台重庆保胆取石 重庆胆结石医院,所以,对于。NET平台的开发人员来说,是时候学习ASP.NET MVC了。

本系列文章作为一个ASP.NET MVC的入门教程,将不会长篇大论介绍其中的概念及理论。而是通过案例实践来学习ASP.NET MVC.在这系列文章中我将逐步完成一个"公告发布系统".我的写作策略是:先动手做,遇到需要解释概念和理论的时候再解释,而不是先把概念和理论解释完再做东西。

另外,我还有几点要说明的:

1.为了将大家的关注点充分集中在ASP.NET MVC上,这个Demo的业务处理将使用Mock的方式。即不会真正去访问数据库,而是虚拟一些数据。

2.本Demo将不考虑任何美工问题。

下面,让我们一起开始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

{

/// <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; }

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

{

/// <summary>

/// 分类服务组件接口

/// </summary>

public interface ICategoryService

{

/// <summary>

/// 添加分类

/// </summary>

/// <param></param>

void Add(CategoryInfo category);

/// <summary>

/// 修改分类名称

/// </summary>

/// <param></param>

/// <param></param>

void ChangeName(int id,string name);

/// <summary>

/// 删除分类

/// </summary>

/// <param></param>

void Remove(int id);

/// <summary>

/// 取得某个分类详细信息

/// </summary>

/// <param></param>

/// <returns></returns>

CategoryInfo GetDetail(int id);

/// <summary>

/// 取得所有分类

/// </summary>

/// <returns></returns>

List<CategoryInfo> GetAll();

}

}

IAnnounceService.cs

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></param>

void Release(AnnounceInfo announce);

/// <summary>

/// 修改公告信息

/// </summary>

/// <param></param>

void Notify(AnnounceInfo announce);

/// <summary>

/// 删除公告

/// </summary>

/// <param></param>

void Remove(int id);

/// <summary>

/// 取得公告详细内容

/// </summary>

/// <param></param>

/// <returns></returns>

AnnounceInfo GetDetail(int id);

/// <summary>

/// 取得某个分类下的所有公告

/// </summary>

/// <param></param>

/// <returns></returns>

List<AnnounceInfo> 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

{

/// <summary>

/// "欺骗"服务组件,用于模拟分类的业务服务

/// </summary>

public class MockCategoryService : ICategoryService

{

/// <summary>

/// 添加分类

/// </summary>

/// <param></param>

public void Add(CategoryInfo category)

{

return;

}

/// <summary>

/// 修改分类名称

/// </summary>

/// <param></param>

/// <param></param>

public void ChangeName(int id, string name)

{

return;

}

/// <summary>

/// 删除分类

/// </summary>

/// <param></param>

public void Remove(int id)

{

return;

}

/// <summary>

[1][2]下一页

【责编:peter】

0 0