注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Lucifer 的博客

网易英超评论专栏

 
 
 

日志

 
 
 
 

ASP.NET MVC Framework Part 1 (一)  

2008-04-28 21:33:53|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ASP.NET MVC Framework (Part 1)

两周之前我写了一个ASP.NET MVC Framework Overviewblog,上面说我们将很快就把它当为一个可选的特性进行支持。它提供了一个结构化的模型,在程序内部实现了清晰的概念分离,而且能够就你的代码进行更容易的单元测试,并支持测试驱动的开发流程(TDD.它还能够帮助你更好的发布你的程序,比如对URL和最终响应的HTML进行更多的控制。

由于我最近一直在回答那些渴望学习更多的人们的很多问题,既然大家给予如此程度的关注,我觉得我应该去写一些新的BLOG来介绍如何去使用这个framework,这第一篇就是近几周以内我会陆续发布的其中之一。

一个简单的电子商店的应用例子

我将会以一个简单的电子商店的应用程序为例,来说明ASP.NET MVC Framework是如何工作的今天我将会实现产品的列表/浏览功能

我们将会构建一个商店的web应用程序,当终端用户在这个网站当中访问/Products/Categories URL的时候,使得他们能够浏览产品种类的列表:

image001

当用户点击如图所示网页中任意产品种类的超链接的时候, 页面将会以/Products/List/CategoryNameURL迁移到某一个产品种类的页面,以列出这个特定的种类下所有的产品

image002

当用户点击一个单独产品的时候,浏览器将以/Products/Detail/ProductIDURL迁移到某一个产品的详细信息页面- 以显示你所选择的特定产品更多的细节。

image003

我们将会使用新的ASP.NET MVC Framework 来构建以上全部功能. 这将使得我们在应用程序的不同组件之间保持清晰的概念分离”, 使我们更容易地进行单元测试集成和测试驱动的开发

创建一个新的ASP.NET MVC 应用程序

Visual Studio(下载安装了ASP.NET MVC Framework包含ASP.NET MVC Project 的模板 ,能够让我们方便地创建一个新的web应用程序。

在菜单项目里面选择 File-<New Project 然后选择"ASP.NET MVC Web Application" 的模板来创建一个新的web应用程序

Visual Studio 将会默认地为你创建一个新的solution 并向内添加两个 project.  第一个project 是你用来实现你的程序的web project.  第二个是能够让你写单元测试代码的测试project

image004

使用ASP.NET MVC Framework的时候,你能够使用任意的单元测试框架 (包括 NUnit, MBUnit, MSTest, Xunit和其他).  现在VS 2008 Professional MSTest提供了内建测试project的支持, 当你使用VS 2008时,我们默认的ASP.NET MVC project 模板也会自动地创建这些project中的一个。

我们也将会提供对于NUnit, MBUnit 以及其他单元测试框架支持的相干下载, 所以如果你更愿意使用那些的话你也能够通过一个简单的点击来创建你的程序并且快速集成一个你想要的测试project

理解项目的文件夹结构

ASP.NET MVC 应用程序会默认地创建一个三层目录的结构:

  •   /Controllers
  •  /Models
  • /Views

就像你所猜到的,我们推荐你把你的控制器类放在/Controllers 目录下, 把你的数据模型类放在/Models目录下, 然后把你的视图模板类放在/Views 目录下

不过ASP.NET MVC framework 并不会让你总是使用这样的结构,而只是默认的项目模板使用了这种模式,而且我们更推荐它只是由于这种方式能够方便地结构化你的应用程序. 除非你拥有一个足够的理由,那你可以使用一种与此不同的文件布局,否则,我更推荐你使用这种模式.

 

将你的URL映射到你的控制器类

在大多数的web框架 (ASP, PHP, JSP, ASP.NET WebForms等等), 用来访问的URL一般典型地映射你物理存储器上的文件结构,比如说 "/Products.aspx" 或者 "/Products.php" 这样的URL 一般说明你的物理存储器上会有Products.aspx 或者 Products.php 这两个文件来处理这个request。当一个要求访问web应用程序的http request 到达web server的时候, web 框架会执行物理存储器上特定文件的代码,并且这个文件的代码就会全权负责处理这个request.  经常性地,此代码在Products.aspx 或者 Products.php文件内部使用了HTML markup 来帮助生成要返回给客户端的response.

MVC framework却以另外一种方式来将URL映射到服务器上的代码没有使用将URL映射到实际物理存储器上的文件这一模式,而是直接将URL映射到类这些类被称之为"Controllers"(控制器),他们才是接收到来的request,处理用户的输入和互动操作,执行适当的应用程序和在此基础上的数据逻辑的角色, 一个控制器类一般会调用一个单独的"视图"组件,而视图组件正是负责生成实际HTML输出,以响应原本的request的.

.image005

ASP.NET MVC Framework 内置了一个非常强力的URL映射引擎,为你如何映射你的URL到控制器类提供了很大的弹性. 通过使用它,你可以非常方便地建立路由规则, ASP.NET在处理接收到的URL请求后能够找出一个特定的控制器去执行. 你还能够让路由引擎自动地转换你在URL中传递的变量.甚至ASP.NET会自动把他们当作声明好的参数传递到你的控制器中去我将会在这个系列未来的一篇blog里专门谈一下URL路由引擎的一些深入细节.

  评论这张
 
阅读(305)| 评论(3)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017