摘要: 引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去的人每次见到委托和事件就觉得心里别(biè)得慌,混身不自在。本文中,我将通过两个范例由浅入深地讲述什么是委托、为什么要使用委托、事件的由来、.Net Framework中的委托和事件、委托和事件对Observer设计模式的意义,对它们的中间代码也做了讨论。将方法作为方法的参数我们先不管这个标题如何的绕口,也不管委托究竟是个什么东西,来看下面这两个最简单的方法,它们不过是在屏幕上输出一句问 阅读全文
posted @ 2012-04-21 19:36 大智若简 阅读(166) 评论(0) 推荐(0) 编辑
摘要: ASP.NET MVC设计的主要原则之一是可扩展性。处理管线(processing pipeline)上的所有(或大多数)东西都是可替换的。因此,如果您不喜欢ASP.NET MVC所使用的约定(或缺乏某些约定),您可以创建自己的服务来支持您的约定,并将其注入到主管线中。在本文中,我们将从管线开始直到视图呈现,逐一向您展示每个ASP.NET MVC开发者都必须了解13个扩展点。1.RouteConstraint通常情况下你可以使用正则表达式对url参数进行约束,但如果您的约束不仅仅取决于单一参数,您可以实现IRouteConstrains的方法,并在其中添加你的验证逻辑。比如对日期的验证,url 阅读全文
posted @ 2012-04-21 19:34 大智若简 阅读(325) 评论(0) 推荐(1) 编辑
摘要: 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 阅读全文
posted @ 2012-04-21 19:25 大智若简 阅读(503) 评论(0) 推荐(0) 编辑
摘要: 这篇文章我们来讲述什么是Action Filter。Action Filter是一个可以贴在控制器或控制器动作上的特性标签,它用来指定该动作如何执行。在ASP.NET MVC框架中主要包含下面几个Action Filter:OutputCache – 这个Action Filter用来把控制器的Action输出内容缓存指定长的时间。HandleError – 这个Action Filter在action执行的时候处理异常信息。Authorize – 这个Action Filter用来对指定的用户或角色授权。我们还可以创建我们自己的Action Filter。如我们可以创建一个自定义的Actio 阅读全文
posted @ 2012-04-21 15:44 大智若简 阅读(693) 评论(0) 推荐(0) 编辑
摘要: (原创:灰灰虫的家http://hi.baidu.com/grayworm)这篇文章我们主要来介绍如何从控制器向母版页中传递数据,在这里我们来试验一下两种向母版页视图中传递数据的方法。一种方法是操作简单但难以维护,另一种方法比较不错,它需要我们做一些初始化的工作,但程序的可维性更强。一、问题提出假设我们程序需要在每个页面中显示电影分类列表,如下图所示。如果我们的电影分类信息存储在数据库中,那如何把数据库中的电影分类信息显示在页面上呢?《图1》关于这个问题,我们可以直接在母版面中访问模型层的代码。换句话说,就是直接在母版页中包含数据库的访问代码,但这样会破坏MVC模式给我们带来分层清晰的优势。因 阅读全文
posted @ 2012-04-21 15:42 大智若简 阅读(420) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章中,我们学习如何使用母版页在多个页面中创建统一布局。例如:我们想把当前web程序中所有数据都以两列的页面布局形式来设置显示。我们可以使用母版面来设置所有页面中共有的数据内容,如:网站Logo、导航链接、广告条等。这样每个页面中都会自动显示这些在母版页中设置的内容。这里我们学习如何创建一个新的母版页,并使用该母版页创建一个新页面。一、创建母版面(原创:灰灰虫的家http://hi.baidu.com/grayworm)下面我们创建一个具有两列显示的母版页,在解决方案管理器中的Views\Shared文件夹上右击,选对“Add”-“New Item”,在弹出的对话框中选择“MVC Vie 阅读全文
posted @ 2012-04-21 15:41 大智若简 阅读(3588) 评论(0) 推荐(1) 编辑
摘要: 一、创建模型类我们下面要显示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 阅读全文
posted @ 2012-04-21 15:39 大智若简 阅读(1264) 评论(0) 推荐(0) 编辑
摘要: 这篇文章中我们建造一个电影数据库管理程序,在这里我们以一种极快极简单的方式来创建电影数据库管理程序,在控制层中直接对数据库进行操作。接着我们学习使用Reporsitory模式,使用Repository模式需要我们额外化些力气,但它可以使我们的程序更容易测试,更好地应对变化。一、什么是模型类MVC模型层包含除了视图层和控制层之外的所有的逻辑,MVC模型层包含所有的商业逻辑和数据访问逻辑我们可以使用各种不同的技术来实现数据访问逻辑。如:我们可以使用Microsoft Entity Framework,NHibernate,Subsonic或ADO.NET类来建造。在这篇文章中,我们使用Linq t 阅读全文
posted @ 2012-04-21 15:37 大智若简 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 这篇文章主要演示如何为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 阅读全文
posted @ 2012-04-21 15:35 大智若简 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章中我们学习在不同版本的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 阅读全文
posted @ 2012-04-21 15:30 大智若简 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 这篇文章我们来讨论一下如何创建我们自己的HTML Helper ,以便在MVC视图中使用。使用HTML Helper可以减少书写那些烦人的HTML标记。在这篇文章的第一部分,我们来谈一下ASP.NET MVC框架中现有的HTML Helper,然后我们再来研究两种创建自定义HTML Helper的方法:通过静态方法创建和通过扩展方法创建。一、理解HTML HelperHTML Helper就是一个返回字符串的方法,这个字符串能提供你想要的各种类型的内容。比如,我们可以使用HTML Helper呈显标准 的HTML标记(<input>和<img>等),我们也可以使用HTM 阅读全文
posted @ 2012-04-21 15:29 大智若简 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 这篇文章主要介绍在ASP.NET MVC应用程序中如何防止JavaScript注入攻击。这篇文章讨论了两种防止JavaScript攻击的方法:在显示数据的时候,通过使用Encoding来防止攻击在接收到数据的时候,通过使用Encoding防止攻一、什么是JavaScript注入攻击(原创:灰灰虫的家 http://hi.baidu.com/grayworm)在我们接收用户输入或在页面显示用户输入的数据时,我们的网站默认是向JavaScript注入攻击敞开了大门。让我们看看我们的Web应用程序如何被JavaScript攻击。假设我们创建了一个用户反馈的网站,用户可以访问该网站并填写产品使用的反馈 阅读全文
posted @ 2012-04-21 15:28 大智若简 阅读(2972) 评论(0) 推荐(1) 编辑
摘要: 在这篇文章中我们将介绍ASP.NET MVC程序中的重要的概念――URL路由。URL 路由就是把入站请求映射到指定的MVC控制器动作上。在这篇文章第一部分,我们将学习使用默认路由表把请求映射到控制器动作上。在第二部分,我们将学习修改默认路由表,实现自定义路由。一、使用默认路由表当我们创建ASP.NET MVC应用程序的时候,应用程序会自动配置URL路由。URL路由需要通过两个地方进行设置。第一、 在应用程序的Web.Config文件中启用URL路由。在配置文件中有四个配置节与URL路由相关:a) system.web.httpModulesb) system.web.httpHandlersc 阅读全文
posted @ 2012-04-21 14:22 大智若简 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 这篇文章简洁介绍了ASP.NET MVC视图、视图数据和HTML辅助。看完这篇文章我们会知道如何创建视图如何从控制层向视图层传输数据如何使用HTML辅助生成视图界面一、理解视图与ASP.NET和ASP不同的是,ASP.NET MVC并不包含直接响影页面代码。在ASP.NET MVC应用程序中,浏览器地址栏中的URL地址并不与硬盘上的页面文件相对应。在ASP.NET MVC应用程序中向页面中传递的内容,我们称之为视图。在ASP.NET MVC应用程序中,来自浏览器的请求被映射到控制器的动作上。控制器的动作返回一个视图,当然控制器也可以执行其它类型的动作,如动作重定向。下面的代码包含了一个名子叫H 阅读全文
posted @ 2012-04-21 14:18 大智若简 阅读(586) 评论(0) 推荐(0) 编辑
摘要: 在这篇文章中我们将探讨ASP.NET MVC控制器、控制器动作和动作结果。看完这篇文章后我们就应当理解控制层如何用户与ASP.NET MVC页面的交互。一、理解控制层MVC控制层主要是响应来自ASP.NET MVC WEB站点的用户请求。每个浏览器的请求被映射到特相应的控制器上。例如:当我们在地址栏中输入下面URLhttp://localhost/Product/Index/3ProductController控制器被触发。ProductController控制器会对浏览器产生响应,例如:控制器向浏览器返回一个视图或控制器重定向到其它的控制器上去。要想添加一个新的控制器,请在ASP.NET M 阅读全文
posted @ 2012-04-21 14:11 大智若简 阅读(386) 评论(0) 推荐(0) 编辑
摘要: 一、理解Models,Views,Controllers这篇文章的主要目的就是来解绍ASP.NET MVC中的M,V,C这三个概念。通过这篇文章我们来学习ASP.NET MVC的各部分如何一起协调工作,以及ASP.NET MVC体系结构与ASP.NET WEB FORMS传统程序结构和ASP的区别。二、简单的ASP.NET MVC程序VS的ASP.NET MVC模板会生成一个非常简单而完整的ASP.NET MVC程序框架,在这里我们就使用这个程序框架。在VS2008中点击“文件”-“新建项目”打开新建项目对话框。在左边选择语言类型,在模板区域选择ASP.NET MVC Web Applicat 阅读全文
posted @ 2012-04-21 14:04 大智若简 阅读(807) 评论(0) 推荐(1) 编辑
摘要: 一、使用ASP.NET MVC创建应用程序这篇文章的通过创建一个asp.net mvc应用程序,展示asp.net mvc是个什么样子,告诉我们如何构建一个简单的asp.net mvc应用程序。如果我们曾使用过asp和asp.net,那我们对asp.net mvc会感到比较熟悉。从页面外观上看asp.net mvc比较像asp的程序,并且也很像asp.net传统的web应用程序。Asp.net mvc提供了多语言功能和.net框架的完整支持。在这篇文章中我们来体会asp.net mvc应用程序与asp和asp.net 传统web应用程序的相同与不同之处。二、工作任务列表程序为了简单其见,我们在 阅读全文
posted @ 2012-04-21 14:02 大智若简 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 实现扩展方法的条件:1:定义扩展方法的类必须是非泛型静态类2:这个类必须有自己的作用域,即不能是内部类3:方法必须是public和static4:方法的第一个参数必须用this修饰,第一个参数就是你要扩展的类型,实例如下:public static class StringExtensions { public static int ToInt(this string s) { return Convert.ToInt32(s); } public void Test() { string s = "2"; Console.WriteLine(s.ToInt()); }} 阅读全文
posted @ 2012-04-21 00:10 大智若简 阅读(361) 评论(0) 推荐(0) 编辑