阿赛·游梦鱼·郭言赛·阿赛工作室
全站技术源码素材
  • 发布:biancheng 浏览:103次 时间:2012-11-13
    我们将整个ASP.NETMVC框架划分为若干个子系统,那么针对请求上下文激活目标Controller对象的子系统被我们成为Controller激活系统。在正式讨论Controller对象具体是如何被创建爱之前,我们先来看看Controller激活系统在ASP.NETMVC中的总体设计,了解一下组成该子系统的一些基本的组件,以及它们对应的接口或者抽象类是什么。一、Controller我们知道作为Co
  • 发布:biancheng 浏览:128次 时间:2012-11-13
    对于一个需要支持多语言的Web应用,一个很常见的使用方式就是通过请求地址来控制界面呈现所基于的语言文化,比如我们在表示请求地址的URL中将上语言文化代码(比如en或者en-US)来指导服务器应该采用怎样的语言来显示界面的内容。对于一个ASP.NETMVC应用来说,我们很容易通过URL路由来实现这样一个功能。在具体介绍实现之前,我们通过一个简单的例子谈谈最终实现的效果。在通过ASP.NETMVC项目
  • 发布:biancheng 浏览:112次 时间:2012-11-6
    我们知道一个请求最终通过一个具体的HttpHandler进行处理,而我们熟悉的用于表示一个Web页面的Page对象就是一个HttpHandler,被用于处理基于某个.aspx文件的请求。我们可以通过HttpHandler的动态映射来实现请求地址与物理文件路径之间的分离。实际上ASP.NET路由系统就是采用了这样的实现原理。如下图所示,ASP.NET路由系统通过一个注册到当前应用的自定义HttpMo
  • 发布:biancheng 浏览:95次 时间:2012-11-6
    ASP.NET路由系统通过注册的路由表旨在实现两个“方向”的路有功能,即针对入栈请求的路由和出栈URL的生成。前者通过调用代表全局路由表的RouteCollection对象的GetRouteData方法实现,后者则依赖于RouteCollection的GetVirtualPathData方法,而最终还是落在继承自RouteBase的路由对象的同名方法的调用上。为了编程的方面
  • 发布:biancheng 浏览:135次 时间:2012-11-4
    上周我写了三篇文章(一、二、三)详细地介绍了ASP.NET的路由系统。ASP.NET的路由系统旨在通过注册URL模板与物理文件之间的映射进而实现请求地址与文件路径之间的分离,但是对于ASP.NETMVC应用来说,请求的目标不再是一个具体的物理文件,而是定义在某个Controller类型中的Action方法。出于自身路由特点的需要,ASP.NET对ASP.NET的路由系统进行了相应的扩展。一、基本路
  • 发布:biancheng 浏览:59次 时间:2012-11-4
    前面我们已经提到过,ASP.NET的路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径的匹配实现请求地址和物理地址的分离;另一个则是通过注册的路由规测生成一个相应的URL。后者通过调用RouteCollection类型的GetVirtualPath方法来实现。如下面的代码片断所示,GetVirtualPath定义了两个GetVirtualPath方法重载,它们共同的参数req
  • 发布:biancheng 浏览:119次 时间:2012-11-1
    总的来说,我们可以通过RouteTable的静态属性Routes得到一个基于应用的全局路由表,通过上面的介绍我们知道这是一个类型的RouteCollection的集合对象,我们可以通过调用它的MapPageRoute进行路由映射,即注册URL模板与某个物理文件的匹配关系。路由注册的核心就是在全局路由表中添加一个Route对象,该对象的绝大部分属性都可以通过MapPageRoute方法的相关参数来指
  • 发布:biancheng 浏览:80次 时间:2012-11-1
    表现为请求地址与目标Controller和Action的动态映射的URL路由系统并不是专属于ASP.NETMVC,而是直接建立在ASP.NET中。ASP.NET通过URL路由系统实现了请求地址与物理文件的分离。一、URL与物理文件的分离对于一个ASP.NETWebForm应用来说,任何一个请求都对应着某个具体的物理文件。部署在Web服务器上的物理文件可以是静态的(比如图片和静态HTML文件等),也
  • 发布:biancheng 浏览:78次 时间:2012-11-1
    作为Controller基类ControllerBase的Execute方法的核心在于对Action方法的执行和作为方法返回的ActionResult的执行,两者的执行是通过一个叫做ActionInvoker的组件来完成的。一、ActionInvoker我们同样为ActionInvoker定义了一个接口IActionInvoker。如下面的代码片断所示,该接口定义了一个唯一的方法InvokeAct
  • 发布:biancheng 浏览:128次 时间:2012-11-1
    ASP.NETMVC的URL路由系统通过注册的路由表对HTTP请求进行解析从而得到一个用于封装路由数据的RouteData对象,而这个过程是通过自定义的UrlRoutingModule对HttpApplication的PostResolveRequestCache事件进行注册实现的。RouteData中已经包含了目标Controller的名称,现在我们来进一步分析真正的Controller对象是如
  • 发布:biancheng 浏览:40次 时间:2012-10-13
    在一个ASP.NETMVC应用来说,针对HTTP请求的处理和相应定义Controller类型的某个Action方法中,每个HTTP请求的目标对象不再像ASP.NETWebForm应用一样是一个物理文件,而是某个Controller的某个Action。目标Controller和Action的名称包含在HTTP请求中,而ASP.NETMVC的首要任务就是通过当前HTTP请求的解析得到正确的Contro
  • 发布:biancheng 浏览:36次 时间:2012-10-13
    ASP.NET由于采用了管道式设计,具有很好的扩展性,而整个ASP.NETMVC应用框架就是通过扩展ASP.NET实现的。通过上面对ASP.NET管道设计的介绍,我们知道ASP.NET的扩展点只要体现在HttpMoudle和HttpHandler这两个核心组建之上,实际上整个ASP.NETMVC框架就是通过自定义的HttpMoudle(UrlRoutingModule)和HttpHandler(M
  • 发布:biancheng 浏览:86次 时间:2012-10-13
    [上篇]通过采用MVC模式,我们可以将可视化UI元素的呈现、UI处理逻辑和业务逻辑分别定义在View、Controller和Model中,但是对于三者之间的交互,MVC并没有进行严格的限制。最为典型的就是允许View和Model绕开Controller进行直接交互,View不仅仅可以通过调用Model获取需要呈现给用户的数据,Model也可以直接通知View让其感知到状态的变化。当真正地将MVC应
  • 发布:biancheng 浏览:26次 时间:2012-10-13
    对于大部分面向最终用户的应用来说,它们都需要具有一个可视化的UI与用户进行交互,我们将这个UI称为视图(View)。在早期,我们倾向于将所有与视图相关的逻辑糅合在一起,这些逻辑包括数据的呈现、用户操作的捕捉与相应以及和针对数据存储(比如数据库)的操作。我们将这种设计模式称为自治视图(AV,AutonomousView)。一、自治视图说到自治视图,可能很多人会感到模式,但是我想很多人(尤其是.NET
  • 发布:biancheng 浏览:54次 时间:2012-10-2
    Action方法的执行具有两种基本的形式,即同步执行和异步执行,而在ASP.NETMVC的整个体系中涉及到很多同步/异步的执行方式,虽然在前面相应的文章中已经对此作了相应的介绍,为了让读者对此有一个整体的了解,我们来做一个总结性的论述。一、MvcHandler的同步与异步对于ASP.NETMVC应用来说,MvcHandler是最终用于处理请求的HttpHandler,它是通过UrlRoutingM
  • 发布:biancheng 浏览:84次 时间:2012-9-26
    VisualStudio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法。如果我们需要定义异步Action方法,必须继承抽象类AsyncController。这篇问你讲述两种不同的异步Action的定义方法和底层执行原理。一、基于线程池的请求处理ASP.NET通过线程池的机制处理并
  • 发布:biancheng 浏览:39次 时间:2012-9-26
    对于Model验证,理想的设计应该是场景驱动的,而不是Model(类型)驱动的,也就是对于同一个Model对象,在不同的使用场景中可能具有不同的验证规则。举个简单的例子,对于一个表示应聘者的数据对象来说,针对应聘的岗位不同,肯定对应聘者的年龄、性别、专业技能等方面有不同的要求。但是ASP.NETMVC的Model验证确是Model驱动的,因为验证规则以验证特性的形式应用到Model类型及其属性上。
  • 发布:biancheng 浏览:42次 时间:2012-9-26
    ASP.NETMVC默认采用基于标准特性的Model验证机制,但是只有应用在Model类型及其属性上的ValidationAttribute才有效。如果我们能够将ValidationAttribute特性直接应用到参数上,我们不但可以实现简单类型(比如int、double等)数据的Model验证,还能够实现“一个Model类型,多种验证规则”,本篇文章将为你提供相关的解决方
  • 发布:biancheng 浏览:26次 时间:2012-9-24
    DataAnnotationsModelValidator最终是通过它对应的ModelValidatorProvider,即DataAnnotationsModelValidatorProvider创建的。通过前面的介绍我们知道它是AssociatedValidatorProvider的子类,后者在用于获取ModelValidator的GetValidators方法中已经根据指定的Model元数据
  • 发布:biancheng 浏览:20次 时间:2012-9-24
    对于ASP.NETMVC基于标注特性的Model验证,很多人只知道应用在数据类型及其属性上用于定义验证规则和错误消息的ValidationAttribute。通过《ASP.NETMVC以ModelValidator为核心的Model验证体系:ModelValidator》的介绍,我们知道了最终用于进行Model验证的是一个叫做ModelValidator的组件。ValidationAttribut
  • 123456789››102Pagesize= Page=
    知识分类
    推荐知识
    近期热门知识

    MapSiteMapRssGoTop