ASP.NET MVC ActionDescriptor对象

评论(0)浏览(139)分类:asp.net-mvc
ASP.NET MVC ActionDescriptor对象  在Model绑定过程中会通过激活的Controller类型创建用于描述它的 ControllerDescriptor对象。Controller是一组Action方法的集合,而每一个Action通过 ActionDescriptor对象来表示,在这篇文章中我们就来着重谈谈不同类型的ActionDescriptor。一、ActionDescriptor  用于描述定义在Controller类中的Action方法的ActionDescriptor定义如下。属..

ASP.NET MVC ControllerDescriptor对象

评论(0)浏览(135)分类:asp.net-mvc
ASP.NET MVC ControllerDescriptor对象  ASP.NET MVC应用的请求都是针对某个Controller的某个Action方法,所以对请求的处理最终体现在对目标Action方法的执行。而Action方 法具有相应的参数,所以在方法执行之前必须根据相应的规则从请求中提取相应的数据并将其转换为Action方法参数列表,我们将这个过程称为Model绑 定。在ASP.NET MVC应用编程接口中,Action方法某个参数的元数据通..

asp.net mvc URL路由

评论(0)浏览(135)分类:asp.net-mvc
asp.net mvc URL路由  在一个ASP.NET MVC应用来说,针对HTTP请求的处理和相应定义Controller类型的某个Action方法中,每个HTTP请求的目标对象不再像ASP .NET Web Form应用一样是一个物理文件,而是某个Controller的某个Action。目标Controller和Action的名称包含在HTTP请求 中,而ASP.NET MVC的首要任务就是通过当前HTTP请求的解析得到正确的Controller和Action的..

ASP.NET Http Runtime Pipeline[上篇]

评论(0)浏览(133)分类:asp.net-mvc
ASP.NET Http Runtime Pipeline[上篇]  相信大家都使用过ASP.NET进行过基于Web的应用开发,ASP.NET是什么?如果站在一个相对High Level的角度,我们可以这样来定义ASP.NET:ASP.NET是一个基于Web的开发平台,提供构建企业级应用所需的Service、Programming Model和Software的Infrastructure。如果我们以一个Low Level的角度来看,它本质上就是一个消息处理器:他接受IIS(确切地说应..

ASP.NET MVC路由扩展:路由映射

评论(0)浏览(133)分类:asp.net-mvc
ASP.NET MVC路由扩展:路由映射  上周我写了三篇文章(ASP.NET mvc URL与物理文件的分离、ASP.NET mvc路由映射、ASP.NET mvc路由规则生成URL) 详细地介绍了ASP.NET的路由系统。ASP.NET的路由系统旨在通过注册URL模板与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但 是对于ASP.NET MVC应用来说,请求的目标不再是一个具体的物理文件,而是定义在某个Controll..

ASP.NET MVC ValueProvider值提供系统:ValueProviderFactory

评论(0)浏览(130)分类:asp.net-mvc
ASP.NET MVC ValueProvider值提供系统:ValueProviderFactory  在ASP.NET Model绑定系统中,用于提供数据值的ValueProvider对象通过ValueProviderFactory来创建。在ASP.NET MVC应用编程接口中,ValueProviderFactory继承自ValueProviderFactory类。本篇文章只要介绍基于ValueProviderFactory的ValueProvider的提供机制,以及如何通过自定义ValueProviderFactory实现我们需要的数据值的绑定方式。一、Valu..

ASP.NET MVC Model验证-ValidationAttribute示例

评论(0)浏览(129)分类:asp.net-mvc
ASP.NET MVC Model验证-ValidationAttribute示例  ASP.NET MVC默认采用基于标准特性的Model验证机制,但是只有应用在Model类型及其属性上的ValidationAttribute才有效。如果我们能 够将ValidationAttribute特性直接应用到参数上,我们不但可以实现简单类型(比如int、double等)数据的Model验证,还能 够实现一个Model类型,多种验证规则,本篇文章将为你提供相关的解决方案(源代码从这里下..

ASP.NET MVC ActionResult本质:JavaScriptResult & JsonResult

评论(0)浏览(128)分类:asp.net-mvc
ASP.NET MVC ActionResult本质:JavaScriptResult & JsonResult  在《ASP.NET MVC ActionResult本质:EmptyResult ContentResult》和《ASP.NET MVC ActionResult本质:FileResult》剖析了EmptyResult、ContentResult和FileResult这三种ActionResult是如何将Action执行的结果响 应给客户端的。本篇文章着重介绍在进行Ajax调用中经常使用的两个ActionResult,即JavaScriptResult和 JsonResult。一、JavaScri..

ASP.NET MVC ActionResult本质:HttpStatusCodeResult & RedirectResult/RedirectToRouteResult

评论(0)浏览(124)分类:asp.net-mvc
ASP.NET MVC ActionResult本质:HttpStatusCodeResult & RedirectResult/RedirectToRouteResultActionResult:HttpStatusCodeResult、 RedirectResult和RedirectToRouteResult 。第一个用于实现针对某个HTTP状态的响应,而后两个用于实现重定向。至于重定向,又分为暂时重定向和永久重定向,按照响应状态,又称302 重定向和301重定向。一、HttpStatusCodeResult  每 一个HTTP响应均具有一个表示响应状态的代码和一个可选的状态描述,正常情..

MVC、MVP以及Model2[上篇]

评论(0)浏览(124)分类:asp.net-mvc
MVC、MVP以及Model2[上篇]  对于大部分面向最终用户的应用来说,它们都需要具有一个可视化的UI与用户进行交互,我 们将这个UI称为视图(View)。在早期,我们倾向于将所有与视图相关的逻辑糅合在一起,这些逻辑包括数据的呈现、用户操作的捕捉与相应以及和针对数据 存储(比如数据库)的操作。我们将这种设计模式称为自治视图(AV,Autonomous View)。一、自治视图  ..

ASP.NET MVC同步与异步[上篇]

评论(0)浏览(123)分类:asp.net-mvc
ASP.NET MVC同步与异步[上篇]  Action方法的执行具有两种基本的形式,即同步执行和异步执行,而在ASP.NETMVC的整个体系中涉及到很多同步/异步的执行方式,虽然在前面相应的文章中已经对此作了相应的介绍,为了让读者对此有一个整体的了解,我们来做一个总结性的论述。一、MvcHandler的同步与异步  对 于ASP.NET MVC应用来说,MvcHandler是最终用于处理请求的HttpHandler..

ASP.NET MVC客户端jQuery Model验证

评论(0)浏览(122)分类:asp.net-mvc
ASP.NET MVC客户端jQuery Model验证  在简单了解了Unobtrusive JavaScript形式的验证在jQuery中的编程方式之后,我们来介绍ASP.NET MVC是如何利用它实现客户端验证的。服务端验证最终实现在相应的ModelValidator中,而最终的验证规则定义在相应的 ValidationAttribute中;而客户端验证规则通过HtmlHelperTModel相应的扩展方法(比如 TextBoxFor、EditorFor和EdidtorForModel等)..

ASP.NET MVC Model元数据提供机制的实现

评论(0)浏览(121)分类:asp.net-mvc
ASP.NET MVC Model元数据提供机制的实现  在前面的介绍中我们已经提到过表示Model元数据的ModelMetadata对象最 终是通过一个名为ModelMetadataProvider的组件提供的,接下来我们着重讨论基于ModelMetadataProvider的 Model元数据提供机制及其扩展。一、 ModelMetadataProvider  在ASP.NET MVC的Model元数据相关的应用编程接口中,用于创建Model元数据的ModelMetadataProvider接继承..

ASP.NET MVC ParameterDescriptor对象

评论(0)浏览(120)分类:asp.net-mvc
ASP.NET MVC ParameterDescriptor对象  Model绑定是为作为目标Action的方法准备参数列表的过程,所以针对参数的描述才是Model绑定的核心。在ASP.NET MVC应用编程接口中,服务于Model绑定的参数元数据通过ParameterDescriptor类型来表示,而ActionDescriptor的GetParameters方法返回的就是一个ParameterDescriptor数组。  如下面的代码片断所示,ParameterDescriptor同样实现了IC..

ASP.NET MVC Model字典绑定

评论(0)浏览(120)分类:asp.net-mvc
ASP.NET MVC Model字典绑定  在《ASP.NET MVC Model简单复杂类型绑定》、《ASP.NET MVC Model数组绑定》通过创建的实例程序模拟了ASP.NET MVC默认使用的DefaultModelBinder对简单类型、复杂类型以及数组对象的Model绑定。现在我们按照相同的方式来分析基于集合和字典类型的Model绑定是如何实现的。[源代码从这里下载]一、集合  这里的集合指的是除数组和字典之外的所有..

ASP.NET MVC ActionResult本质:EmptyResult & ContentResult

评论(0)浏览(120)分类:asp.net-mvc
ASP.NET MVC ActionResult本质:EmptyResult & ContentResult  定义在Controller中的Action方法大都返回一个ActionResult对 象。ActionResult是对Action执行结果的封装,用于最终对请求进行响应。ASP.NET MVC提供了一系列的ActionResult,它们本质上是通过怎样的方式来响应请求的呢?这是这个系列着重讨论的主题。一、ActionResult对请求的响应  HTTP 是一个单纯的采用请求/回复消息交换模式的网络协议..

ASP.NET MVC Model模板的获取与执行策略

评论(0)浏览(118)分类:asp.net-mvc
ASP.NET MVC Model模板的获取与执行策略  当调用HtmlHelper或者HtmlHelperTModel 的模板方法对整个Model或者Model的某个数据成员以某种模式(显示模式或者编辑模式)进行呈现的时候,通过预先创建的代表Model元数据的 ModelMetadata对象都可以找到相应的模板。如果模板对应着某个自定义的分部View,那么只需要执行该View即可;对于默认模板,则直接可 以得到相应的HTML。本篇文章着重..

ASP.NET mvc URL与物理文件的分离

评论(0)浏览(118)分类:asp.net-mvc
ASP.NET mvc URL与物理文件的分离  表现为请求地址与目标Controller和Action的动态映射的URL路由系统并不是专属于ASP.NET MVC,而是直接建立在ASP.NET 中。ASP.NET通过URL路由系统实现了请求地址与物理文件的分离。[源代码地址从这里下载]一、URL与物理文件的分离  对 于一个 ASP.NET Web Form应用来说,任何一个请求都对应着某个具体的物理文件。部署在Web服务器上的物理文..

ASP.NET MVC Model ListControl

评论(0)浏览(114)分类:asp.net-mvc
ASP.NET MVC Model ListControl  可以创建相应的模板来根据Model元数据控制种类型的数据在UI界面上的呈现方法,还可以通过一些扩展来控制Model元数据本身。在某些情况下通过这两者的结合往往可以解决很多特殊数据的呈现问题,我们接下来演示的实例就是典型的例子。  传 统的ASP.NET具有一组重要的控件类型叫做列表控件(ListControl),它的子类包括DropDownList、ListBox..

ASP.NET Http Runtime Pipeline[下篇]

评论(0)浏览(109)分类:asp.net-mvc
ASP.NET Http Runtime Pipeline[下篇]二、ASP.NET Runtime Pipeline(续ASP.NET Http Runtime Pipeline[上篇])  现在我们真正进入ASP.NET管辖的范畴,下图基本上囊括整个处理过程涉及的对象,接下来我们一起来讨论这一系列的对象如何相互协作去处理Http Request,并最终生成我们所需的Http Response。HttpContext  上面我们介绍了ISAPI在调用ISAPIRuntime的时候将对应的ISAPI ECB..

ASP.NET MVC路由扩展:链接和URL的生成

评论(0)浏览(107)分类:asp.net-mvc
ASP.NET MVC路由扩展:链接和URL的生成  ASP.NET 路由系统通过注册的路由表旨在实现两个方向的路有功能,即针对入栈请求的路由和出栈URL的生成。前者通过调用代表全局路由表的 RouteCollection对象的GetRouteData方法实现,后者则依赖于RouteCollection的 GetVirtualPathData方法,而最终还是落在继承自RouteBase的路由对象的同名方法的调用上。为了编程的方面,ASP.NET MVC为了设计..

ASP.NET MVC Model元数据IMetadataAware接口

评论(0)浏览(107)分类:asp.net-mvc
ASP.NET MVC Model元数据IMetadataAware接口  在介绍用于自定义Model元数据属性的 AdditionalMetadataAttribute特性时我们提到了它实现的接口IMedataAware,我们说这是一个非常重要并且有用的接 口,通过自定义实现该接口的特性我们可以对最终生成的Model元数据进行自由地定制。如下面的代码片断所示,IMedataAware接口具有唯一的方 法成员OnMetadataCreated。当Model元数据被创建出来后..

ASP.NET MVC Controller默认实现

评论(0)浏览(107)分类:asp.net-mvc
ASP.NET MVC Controller默认实现  Controller激活系统最终通过注册的ControllerFactory创建相 应的Conroller对象,如果没有对ControllerFactory类型或者类型进行显式注册(通过调用当前ControllerBuilder 的SetControllerFactory方法),默认使用的是一个DefaultControllerFactory对象,我们现在就来讨论实现在DefaultControllerFactory类型中的默认Controller激活机制。一、..

ASP.NET MVC Model验证-DataAnnotationsModelValidator

评论(0)浏览(107)分类:asp.net-mvc
ASP.NET MVC Model验证-DataAnnotationsModelValidator  对于ASP.NET MVC基于标注特性的Model验证,很多人只知道应用在数据类型及其属性上用于定义验证规则和错误消息的ValidationAttribute。通过《ASP.NET MVC Model验证-ModelValidator》 的介绍,我们知道了最终用于进行Model验证的是一个叫做ModelValidator的组件。ValidationAttribute对应的 ModelValidator为DataAnnotationsModelValidator,..

ASP.NET MVC集成EntLib异常处理实例

评论(0)浏览(106)分类:asp.net-mvc
ASP.NET MVC集成EntLib异常处理实例  合理的异常处理应该是场景驱动的,在不同的场景下,采用的异常处理策略往往是不同的。异 常处理的策略应该是可配置的,因为应用程序出现怎样的异常往往是不可预测的,现有异常策略的不足往往需要在真正出现某种异常的时候才会体现出来,所以我们 需要一种动态可配置的异常处理策略维护方式。目前有一些开源的异常处理框架提供了这种可配置的..

ASP.NET MVC Controller的激活

评论(0)浏览(106)分类:asp.net-mvc
ASP.NET MVC Controller的激活  ASP.NET MVC的URL路由系统通过注册的路由表对HTTP请求进行解析从而得到一个用于封装路由数据的RouteData对象,而这个过程是通过自定义的 UrlRoutingModule对HttpApplication的PostResolveRequestCache事件进行注册实现的。 RouteData中已经包含了目标Controller的名称,现在我们来进一步分析真正的Controller对象是如何被激活的。我们首先需..

ASP.NET MVC Model验证-ModelValidatorProvider

评论(0)浏览(105)分类:asp.net-mvc
ASP.NET MVC Model验证-ModelValidatorProvider  在《ASP.NET MVC Model验证-ModelValidator》 中我们介绍了ASP.NET MVC用于Model验证的四种ModelValidator,那么这些ModelValidator是如何被创建的呢?ASP.NET MVC的很多组件(比如ModelBinder和Filter)都采用了基于Provider的提供机制,这篇文章为你讲述这些 ModelValidator对应的ModelValidatorProvider。一、ModelValidatorProvider  ..

ASP.NET MVC Controller IoC应用[上篇]

评论(0)浏览(103)分类:asp.net-mvc
ASP.NET MVC Controller IoC应用[上篇]  所谓控制反转(IoC: Inversion Of Control)简单地说就是应用本身不负责依赖对象的创建和维护,而交给一个外部容器来负责。这样控制权就由应用转移到了外部IoC容器,控制权就实现 了所谓的反转。比如在类型A中需要使用类型B的实例,而B实例的创建并不由A来负责,而是通过外部容器来创建。通过IoC的方式是实现针对目标 Controller的激活具有..

ASP.NET MVC Model预定义模板

评论(0)浏览(103)分类:asp.net-mvc
ASP.NET MVC Model预定义模板  通过ModelMetadata表示的Model元数据的一个主要的作用在于为定义在 HtmlHelper和HtmlHelperTModel中的模板方法(这些模板方法包括Display/DisplayFor、 Editor/EditorFor、DisplayForModel/EditForModel、Lable/LabelFor和DisplayText /DisplayTextFor等)提供用于最终生成HTML的元数据信息。在调用这些方法的时候,如果我们指定了一个具体的..

ASP.NET MVC ControllerDescriptor与ActionDescriptor的创建机制

评论(0)浏览(103)分类:asp.net-mvc
ASP.NET MVC ControllerDescriptor与ActionDescriptor的创建机制  不论是用于描述Controller的ControllerDescriptor,还是 用于描述Action方法的ActionDescriptor,都具有同步和异步两个版本,那么这些不同类型的ControllerDescriptor 的ActionDescriptor是在什么情况下创建的呢?一、ControllerActionInvoker与AsyncControllerActionInvoker  ControllerDescriptor 的创建设计到一个重要的名为ActionInvo..