`
ljl_xyf
  • 浏览: 636010 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

前言

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

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

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

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

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

下面,让我们一起开始ASP.NET MVC400电话 电子公告之旅吧。在这一篇中,我们将做完所有的准备工作。

配置环境

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

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

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:

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

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下的。


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 MVC完成这个案例。

  • 大小: 41.8 KB
分享到:
评论

相关推荐

    Pro ASP.NET MVC 5 Platform

    - **核心内容**:本书旨在为没有 Web Forms 经验的 ASP.NET MVC 开发者提供一个深入理解 ASP.NET 平台的机会。 - **目标读者**:面向希望深入了解 ASP.NET 平台特性的 ASP.NET MVC 开发者。 #### 描述:“英文版 ...

    基于ASP.NET MVC项目实例

    ASP.NET MVC是一种用于构建动态网站和Web应用程序的框架,它由微软开发,基于模型(Model)、视图(View)和控制器(Controller)的设计模式。本项目实例是一个商品信息管理系统,旨在帮助开发者理解MVC架构的核心概念和...

    ASP.NET MVC4 Web编程

    ASP.NET MVC4是一种基于微软.NET Framework的开源web应用程序框架,专为构建可维护性和测试性的动态网站而设计。它结合了MVC(Model-View-Controller)设计模式、ASP.NET的功能性和HTML5的新特性,提供了高效且灵活...

    asp.Net mvc4 实例

    ASP.NET MVC4是一种基于Microsoft .NET Framework的轻量级、模型-视图-控制器(MVC)框架,用于构建可维护、高性能的Web应用程序。在VS2010集成开发环境中,结合SQL2008数据库,我们可以创建出功能丰富的Web应用。...

    asp.net mvc6源码

    ASP.NET MVC6是微软开发的一款用于构建Web应用程序的框架,它是ASP.NET Core的一部分,具有高度模块化、跨平台和高性能的特性。ASP.NET MVC6在ASP.NET MVC5的基础上进行了重大改进,以适应现代Web开发的需求。 1. *...

    ASP.NET MVC框架开发系列课程(25):ASP.NET MVC正式版发布

    ASP.NET MVC框架是微软推出的一款用于构建Web应用程序的开源框架,它基于模型-视图-控制器(Model-View-Controller)设计模式。在本课程中,我们将深入探讨ASP.NET MVC的正式版本,这个版本通常代表着稳定性和性能的...

    Professional ASP.NET MVC 2

    《Professional ASP.NET MVC 2》是一本深入探讨ASP.NET MVC框架第二版的专业书籍,由Jon Galloway、Phil Haack、Scott Hanselman、Scott Guthrie和Rob Conery等多位业界专家共同编写。这本书旨在帮助读者全面理解并...

    ASP.NET MVC框架开发系列课程(1):MVC模式与ASP.NET MVC框架概述

    ASP.NET MVC框架基于这个模式,提供了丰富的特性来支持Web开发。以下是一些关键知识点: 1. **路由系统**:ASP.NET MVC使用路由引擎来解析HTTP请求,并将其映射到相应的控制器和操作方法。开发者可以通过自定义路由...

    一套通用的Easyui+asp.net mvc开发框架源码

    【标题】"一套通用的Easyui+asp.net mvc开发框架源码"揭示了这是一个用于构建Web应用程序的基础架构,结合了两种技术:Easyui和asp.net MVC5。Easyui是一个基于jQuery的用户界面库,提供了丰富的组件和主题,用于...

    professional asp.net mvc 2

    《Professional ASP.NET MVC 2》是一本专注于微软ASP.NET MVC框架的专业书籍,旨在帮助开发者深入理解和熟练运用这一强大的Web应用程序开发技术。ASP.NET MVC是一种基于模型-视图-控制器(Model-View-Controller)...

    ASP.NET MVC3 安装包

    ASP.NET MVC3 是微软开发的一款用于构建Web应用程序的框架,它是基于ASP.NET平台的一个轻量级、模型-视图-控制器(MVC)架构。MVC模式允许开发者将业务逻辑、数据处理和用户界面分离,提高了代码的可读性和可维护性。...

    dwz框架 asp.net mvc3

    MVC3是ASP.NET MVC系列的第三个主要版本,它引入了许多新特性,如 Razor视图引擎、增强的模型绑定、对jQuery的内置支持以及更强大的错误处理机制。 当DWZ框架与ASP.NET MVC3结合使用时,可以实现前后端分离的开发...

    asp.net mvc4+汉化包

    ASP.NET MVC4是微软开发的一款用于构建Web应用程序的框架,它是基于ASP.NET平台的,专为构建可测试、模块化和高性能的Web应用程序而设计。这个"asp.net mvc4+汉化包"是为了方便中国开发者使用,提供了中文语言支持。...

    ASP.NET MVC5 bootstrap 小例子

    ASP.NET MVC5是一个强大的Web应用程序开发框架,由微软公司提供,它结合了ASP.NET、Model-View-Controller(MVC)设计模式和 razor 视图引擎,为开发者提供了构建高效、可测试和易于维护的Web应用的能力。...

    Professional.ASP.NET.MVC.2 optimize

    ### ASP.NET MVC 2优化详解 #### 前言与概述 《Professional ASP.NET MVC 2 Optimize》是一本深入探讨ASP.NET MVC 2框架的专业书籍,由Jon Galloway、Phil Haack、Scott Hanselman、Scott Guthrie和Rob Conery等...

    ASP.NET MVC 2 Release Candidate Release Notes

    ASP.NET MVC 2 Release Candidate Release Notes 是针对ASP.NET MVC框架的第二个候选版本的重要更新文档,主要涵盖了一系列新特性、改进和修复的问题。以下是对这些关键点的详细解释: 1. **ASP.NET MVC验证脚本...

    Pro ASP.NET MVC 3 Framework 3rd Edition

    通过本章的实际操作,读者可以亲身体验如何创建一个简单的ASP.NET MVC应用程序,从而对框架的基本结构和工作流程有一个直观的认识。 #### 第二部分:ASP.NET MVC 3详解 第二部分则深入探讨了ASP.NET MVC 3框架的...

Global site tag (gtag.js) - Google Analytics