一起谈.NET技术,细数ASP.NET MVC框架的7大顶级功能

  ASP.NET MVC框架对构建ASP.NET应用程序的开发人员来说的确很有吸引力,因为它的松耦合特征使项目管理变得更加轻松,ASP.NET MVC最初由微软随.NET framework 3.5 SP1一起引入(即ASP.NET MVC 1.0),现在.NET Framework 4.0和Visual Studio 2010默认支持第二个版本,即ASP.NET MVC 2.0,在这篇文章中,我将带你领略一下ASP.NET MVC框架的7个顶级功能。

  所有概念都围绕下面三个主要组件展开:

   · 模型(用M表示):模型是负责表现底层数据库模式的业务对象,容纳MVC应用程序的数据/状态。

   · 视图(用V表示):视图指的是应用程序的UI,在ASP.NET MVC应用程序中,它通常就是一个.aspx和.ascx文件。

   · 控制器(用C表示):控制器是ASP.NET MVC框架应用程序的核心,它负责给客户端呈现适当的视图,执行相关的行为方法,从模型获取数据,然后填充到视图,或从视图获取数据,然后更新模型等。

  图1展示了MVC模式三大组件之间的相互关系。

  图 1 MVC框架的三个组件

  1、打通并行开发的任督二脉

  当你在Visual Studio 2010中创建ASP.NET MVC应用程序时,你会发现在Visual Studio IDE的解决方案下自动创建了Controller(控制器),View(视图)和Model(模型)三个文件夹,模型,控制器和视图必须分离成不同的文件,图2显示了一个解决方案资源管理器屏幕截图。

  图 2 ASP.NET MVC应用程序解决方案资源管理器树形结构

  在大多数组织中,有单独负责界面设计的UI团队,负责编写核心.NET代码的开发团队,也有数据团队(管理数据模型),这种松耦合组织架构的主要优点是,允许不同的团队在自己的领域工作,相互依赖性很低,例如,对于UI团队,他们只管视图,对于背后隐藏的代码完全不用关心,那些事情有开发团队来处理。

  因此,ASP.NET MVC框架降低了并行开发的复杂性。  

  2、URL路由,控制器响应请求

  和一般的ASP.NET应用程序不一样,ASP.NET MVC应用程序请求不是由磁盘上的文件,如.aspx文件产生的,而是由控制器直接产生的,下面是一个请求URL格式示例:


http://localhost:34299/<Controller>/<ActionMethodName>

  入站请求将会触发URL指定控制器的ActionMethod(行为方法),例如,请求将被路由到相应控制器的行为方法,该方法将负责呈现结果视图,为什么和开发人员有关系呢?下面就是答案:

   · 和REST风格的URL结构类似,这也导致用户可以轻易操作URL。

   · 使应用程序对搜索引擎友好,在现代Web应用程序开发中,这被认为是很重要的。

  是什么让这个URL驱动架构成为可能呢?秘密就在global.asax文件中,看看下面的代码:


public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
                                 // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
}

  在上面的代码中,你可能已经注意到如何注册URL路由,以及如何指定默认值。

  3、支持测试驱动开发

  由于MVC架构是松散的,构建单元测试用例变得很简单,它使测试驱动开发成为可能,例如,如果你有一个正常的.aspx.cs页面,你想为它建立单元测试用例,复杂度很高,因为:

  ·  你必须为你的页面代码隐藏类创建实例;

   · 隐藏代码将指向ASP.NET控件;

   · 为事件(如GridView_RowDataBound)创建单元测试用例很困难。

  在MVC模式下,文件背后没有任何代码,也没有UI元素引用,使任务变得非常容易,你需要做的仅仅是指向控制器的ActionMethod,点击右键选择“创建单元测试”,如图3所示。

  图 3 创建单元测试

  4、HTML辅助方法的可用性

  ASP.NET MVC视图是由HTML驱动的,你不用使用任何ASP.NET服务器控件,ASP.NET MVC为此专门提供一堆HTML辅助方法,使视图开发任务变得更简单,最爽的是开发人员可以获得这些HTML辅助方法的100%智能提示,图4显示了一个示例屏幕截图。

  图 4 HTML辅助方法智能提示

  在上面的屏幕截图中,你可能注意到了复选框(checkbox)和文本框(textbox)等部分的Lambda表达式,创建辅助方法指定控件是为注入模型的特定字段创建的。 

  5、ASP.NET MVC CRUD实现:脚手架可用性

  在日常的应用程序开发中,开发人员花在写代码上的时间是最多的,但大多数时候都是重复做数据项的创建(C)、读取(R)、更新(U)和删除(D)操作,ASP.NET MVC框架为CRUD操作提供了一个脚手架,当你创建控制器时,你可以选择让框架帮你创建好CRUD操作的行为方法,如图5所示。

  图 5 为CRUD操作添加行为方法

  下面是生成的代码示例:


public class MyController : Controller
{
//
// GET: /My/
public ActionResult Index()
{
return View();
}
//
// GET: /My/Details/5
public ActionResult Details(int id)
{
return View();
}
//
// GET: /My/Create
public ActionResult Create()
{
return View();
}
//
// POST: /My/Create
[HttpPost]
public ActionResult Create(FormCollection collection)
{
try
{
// TODO: Add insert logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /My/Edit/5
public ActionResult Edit(int id)
{
return View();
}
//
// POST: /My/Edit/5
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
try
{
// TODO: Add update logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
//
// GET: /My/Delete/5
public ActionResult Delete(int id)
{
return View();
}
//
// POST: /My/Delete/5
[HttpPost]
public ActionResult Delete(int id, FormCollection collection)
{
try
{
// TODO: Add delete logic here
return RedirectToAction("Index");
}
catch
{
return View();
}
}
}

  6、模板功能

  模板功能是ASP.NET MVC 2.0版本才引入的新功能,此功能允许你创建一个共享的局部视图,可以在其它视图中直接使用它,用于编辑模板功能的HTML辅助方法有:Html.EditorFor,Html.Editor和 Html.EditorForModel。

  7、使用数据注释属性进行验证

  ASP.NET MVC框架提供了一些数据注释属性用于数据验证,这些属性用来装饰模型暴露的字段,下面是其中一部分属性:

   · Required

   · DisplayName

   · StringLength

   · ScaffoldColumn

   · Range等

  小结

  我希望这篇文章列举的ASP.NET MVC框架7个顶级功能是实至名归的,其中模板和数据验证功能有点广泛,我将在以后的文章中进行详述,当然欢迎你在本文后面的评论中发表你的高见。

时间: 2024-09-10 07:27:36

一起谈.NET技术,细数ASP.NET MVC框架的7大顶级功能的相关文章

细数ASP.NET MVC框架的7大顶级功能

ASP.NET MVC框架对构建ASP.NET应用程序的开发人员来说的确很有吸引力,因为它的松耦合特征使项目管理变得更加轻松,ASP.NET MVC最初由微软随.NET framework 3.5 SP1一起引入(即ASP.NET MVC 1.0),现在.NET Framework 4.0和Visual Studio 2010默认支持第二个版本,即ASP.NET MVC 2.0,在这篇文章中,我将带你领略一下ASP.NET MVC框架的7个顶级功能. 所有概念都围绕下面三个主要组件展开: · 模

一起谈.NET技术,跟ASP.NET MVC一起使用jQuery

藉由ASP.NET MVC内置的扩展性,开发人员便可以使用第三方库,例如jQuery.在使用ASP.NET Webforms的时候,如果使用jQuery而不是ASP.NET AJAX,难度会比较大. 刚开始撰写本文的时候,ASP.NET MVC的版本是Preview 4,有些在Preview 4中使用的技术可能无法在早期版本中正常工作.Preview 4可以在CodePlex上下载. 初步配置 我不打算把它写成一篇完整的jQuery指南,只是简单给出几个跟ASP.NET MVC一起使用这款Jav

一起谈.NET技术,[翻译]ASP.NET MVC 3 RC 发布通告

今天早上,ASP.NET组发布了ASP.NET 3 RC版(release candidate).你们可以从这里进行下载here. ASP.NET MVC 3是个很完美的发布,增加了大量的功能改进.它可以向后兼容ASP.NET MVC V1 和 V2,可以轻易的升级你现有的项目(可以阅读发布须知,根据里面的步骤去做).你还可以通过我之前发表的博客文章来学习ASP.NET MVC 3的很多功能.  今天的ASP.NET MVC 3 RC build 包含了一些附加的功能改进(除了修正了一些bug外

一起谈.NET技术,在ASP.NET MVC中进行TDD开发

TDD介绍 TDD是一种开发方法,全称是Test-Driven development,中文是测试驱动开发.作者是Kent Beck.首先让我介绍一下三种常见的开发方式: 第一种:先Coding,然后Bug Fix. 第二种:先Coding,然后Unit Test,最后Bug Fix.很显然用了单元测试的比第一种开发方式要好不少. 第三种:就是本文要说的TDD,它的方式和第二种恰恰相反.TDD先设计单元测试,然后再Coding,最后修复Bug.看下图: TDD开发过程可以看成:给制自己制定一个目

一起谈.NET技术,利用ASP.NET MVC源代码调试你的应用程序

之前写了一篇博客:利用.NET Framework4.0的源代码调试你的应用程序.那篇文章教你如何利用.NET Framework4.0的源代码帮助你调试应用程序,其实也就是进入.NET Framework4.0源代码进行单步调试.由于项目需要,最近学起asp.net mvc.昨天遇到ViewData和TempData他们之间的分别这样让我纠结的问题.有园友强烈建议我去看ASP.NET MVC的源代码.所以,我想到如何在调试ASP.NET MVC程序的时候,有不明白的地方,就单步进入ASP.NE

一起谈.NET技术,体验ASP.NET MVC 3中的Razor特性

1 闲话ASP.NET MVC 3 beta 不知道不觉MVC3更新了好几次了...因为一直在弄Silverlight的开发没有时间关注ASP.NET MVC.之前出preview 的时候就看了园子里的一些文章. 但是总觉得"不咋地",依赖注入早就有一套了,全局拦截器也就那么回事..好像都没有对开发效率有太大的提升...(一己之见.目前正在学习MVC3BEAT的DI). 除了RAZOR...  好吧. 现在开始动手吧! 2开工  2.1目录     在_ViewStart.cshtml

一起谈.NET技术,将ASP.NET MVC 2.0 部署在IIS6和IIS7上的教程

开发环境:Win7+IIS7+VS2008 SP1+ASP.NET MVC 2.0 RC 在部署MVC应用之前,一定要确保你的程序BIN文件夹下面是否包含 System.Web.Mvc.dll(非常重要),如图: 如果没有, 请在你的MVC项目中,打开引用列表,如图:   鼠标右键点击System.Web.Mvc,选择"属性",转到下面窗口: 将"复制本地"设为True (默认为False),然后生成一下项目,System.Web.Mvc.dll就会出现在BIN文件

一起谈.NET技术,盘点ASP.NET Ajax工具箱的10大顶级控件

默认情况下,.NET Framework仅自带了最基本的Ajax控件,如UpdatePanel,UpdateProgress等,如果你想让现有ASP.NET应用程序Ajax化,最简单的方法就是利用Ajax控件工具箱中的扩展控件,但Visual Studio默认并没有附带Ajax工具箱,你需要从这里下载,将其添加到Visual Studio工具箱中之后就可以在ASP.NET应用程序中使用了,注意,本文是针对.NET Framework 3.5而非4.0的. 1.自动完成扩展(AutoComplet

一起谈.NET技术,探索Asp.net mvc 的文件上传(由浅入深)

代码下载:http://files.cnblogs.com/n-pei/mvcfileupload.zip 最近因为TeamVideo需要用到视频和图片上传功能,所以试着Google了很多资料,和大家分享下. 1.最基本的文件上传 在View界面通过Form把数据POST到控制端(Controller),Controller把文件存储到服务器,再Redirect到其他页面. View部分的代码: Controller部分需要判断是否有Post过来文件,有文件就保存,再重定向到index页面. 上