摘要:
引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作为方法的参数我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问 阅读全文
摘要:
ASP.NET MVC设计的主要原则之一是可扩展性。处理管线(processing pipeline)上的所有(或大多数)东西都是可替换的。因此,如果您不喜欢ASP.NET MVC所使用的约定(或缺乏某些约定),您可以创建自己的服务来支持您的约定,并将其注入到主管线中。在本文中,我们将从管线开始直到视图呈现,逐一向您展示每个ASP.NET MVC开发者都必须了解13个扩展点。1.RouteConstraint通常情况下你可以使用正则表达式对url参数进行约束,但如果您的约束不仅仅取决于单一参数,您可以实现IRouteConstrains的方法,并在其中添加你的验证逻辑。比如对日期的验证,url 阅读全文
摘要:
ASP.NET MVC就是把原来WebForm中的一个IHttpHandler换成了两个IHttpHandler。原来的Page(IHttpHandler)既负责业务逻辑又负责显示,在MVC中换成了两个IHttpHandler,第一个Handler负责业务逻辑,第一个Handler就是在ProcessRequest中构造Controller的那个Handler,然后第二个Handler(ASPX)纯粹是View,是用来显示的。把WebForm的一个IHttpHandler换成了两个IHttpHandler,MVC模式的业务被放置到Controller中去执行,而aspx页面只负责显示。在MVC 阅读全文
摘要:
这篇文章我们来讲述什么是Action Filter。Action Filter是一个可以贴在控制器或控制器动作上的特性标签,它用来指定该动作如何执行。在ASP.NET MVC框架中主要包含下面几个Action Filter:OutputCache – 这个Action Filter用来把控制器的Action输出内容缓存指定长的时间。HandleError – 这个Action Filter在action执行的时候处理异常信息。Authorize – 这个Action Filter用来对指定的用户或角色授权。我们还可以创建我们自己的Action Filter。如我们可以创建一个自定义的Actio 阅读全文
摘要:
(原创:灰灰虫的家http://hi.baidu.com/grayworm)这篇文章我们主要来介绍如何从控制器向母版页中传递数据,在这里我们来试验一下两种向母版页视图中传递数据的方法。一种方法是操作简单但难以维护,另一种方法比较不错,它需要我们做一些初始化的工作,但程序的可维性更强。一、问题提出假设我们程序需要在每个页面中显示电影分类列表,如下图所示。如果我们的电影分类信息存储在数据库中,那如何把数据库中的电影分类信息显示在页面上呢?《图1》关于这个问题,我们可以直接在母版面中访问模型层的代码。换句话说,就是直接在母版页中包含数据库的访问代码,但这样会破坏MVC模式给我们带来分层清晰的优势。因 阅读全文
摘要:
在这篇文章中,我们学习如何使用母版页在多个页面中创建统一布局。例如:我们想把当前web程序中所有数据都以两列的页面布局形式来设置显示。我们可以使用母版面来设置所有页面中共有的数据内容,如:网站Logo、导航链接、广告条等。这样每个页面中都会自动显示这些在母版页中设置的内容。这里我们学习如何创建一个新的母版页,并使用该母版页创建一个新页面。一、创建母版面(原创:灰灰虫的家http://hi.baidu.com/grayworm)下面我们创建一个具有两列显示的母版页,在解决方案管理器中的Views\Shared文件夹上右击,选对“Add”-“New Item”,在弹出的对话框中选择“MVC Vie 阅读全文
摘要:
一、创建模型类我们下面要显示Movies表中的数据,Movies表的结构如下:IdInt FalseTitle Nvarchar(200) FalseDirector NVarchar(50) FalseDateReleased DateTime False我们以 Linq to Sql作为我们显示Movies表的数据访问技术。换句话说,我们使用Linq to Sql来写我们MVC模型类在解决方案管理器中右击,选择“Add”-“New Item”,在弹出的对话框中,选择LINQ to SQL Classes模板,在把它命名为Movie.dbml,点击“Add”按钮。《图1》创建完LINQ to 阅读全文
摘要:
这篇文章中我们建造一个电影数据库管理程序,在这里我们以一种极快极简单的方式来创建电影数据库管理程序,在控制层中直接对数据库进行操作。接着我们学习使用Reporsitory模式,使用Repository模式需要我们额外化些力气,但它可以使我们的程序更容易测试,更好地应对变化。一、什么是模型类MVC模型层包含除了视图层和控制层之外的所有的逻辑,MVC模型层包含所有的商业逻辑和数据访问逻辑我们可以使用各种不同的技术来实现数据访问逻辑。如:我们可以使用Microsoft Entity Framework,NHibernate,Subsonic或ADO.NET类来建造。在这篇文章中,我们使用Linq t 阅读全文
摘要:
这篇文章主要演示如何为ASP.NET MVC应用程序创建单元测试。这里我们讨论了如何建三类单元测试测试控制器返回特定的视图测试控制器返回特定的View Data测试控帽器返回特定的Action Result一、创建要测试的控制器我们把要测试的控制器命名为ProductController,代码如下:Listing 1 – ProductController.csusing System; using System.Web.Mvc; namespace Store.Controllers { public class ProductController : Controller { public 阅读全文
摘要:
在这篇文章中我们学习在不同版本的IIS中使用ASP.NET MVC和URL Routing。我们学习针对IIS7.0、IIS6.0和更早版本的IIS的处理策略ASP.NET MVC框架依赖于URL Routing,要充分利用URL Routing,我们需要对Web服务器(IIS)进行一些额外的配置。IIS的最新版本是Windows2008中的IIS7.0,我们也可以Vista系统中(除了Home Basic版)安装IIS7.0。IIS7.0是提供了两种处理请求的模式-集成模式和传统模式。如果使用IIS7.0的话,那我们不需要做任何配置,如果要使用传统模式的话则需要我们做一些额外的配置工作。在W 阅读全文