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 Model元数据IMetadataAware接口

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

ASP.NET MVC Model元数据定制

评论(0)浏览(88)分类:asp.net-mvc
ASP.NET MVC Model元数据定制  在《ASP.NET MVC Model元数据》 我们已经提到过了,Model元数据的定制是通过在作为Model的数据类型极其属性成员上应用相应的特性来实现,这些用于声明式元数据定义的特性大都定 义在System.ComponentModel.DataAnnotations.dll程序集中,程序集的名称同时也是对应的命名空间名称,所以我们 可以它们为数据注解特性(Data Annotation Attribu..

ASP.NET MVC Model元数据

评论(0)浏览(175)分类:asp.net-mvc
ASP.NET MVC Model元数据  Contronoller激活之后,ASP.NET MVC会根据当前请求上下文得到目标Action的名称,然后解析出对应的方法并执行之。在整个Action方法的执行过程中,Model元数据的解析是 一个非常重要的环节。ASP.NET MVC中的Model实际上View Model,表示最终绑定到View上的数据,而Model元数据描述了Model的数据结构,以及Model的每个数据成员的一些特性。正是..

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

评论(0)浏览(91)分类:asp.net-mvc
ASP.NET MVC Controller IoC应用[下篇]  [ASP.NET MVC Controller IoC应用[上篇] 除了通过自定义ControllerFactory的方式引入IoC之外,在使用默认DefaultControllerFactory情况下也可以通过 一些扩展使基于IoC的Controller激活成为可能。主要的方式就是自定义ControllerActivator和 DependencyResolver。四、ControllerActivator V.S. DependencyResolver  如下面的代码片断所示,..

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 Controller默认实现

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

ASP.NET MVC Controller总体设计

评论(0)浏览(97)分类:asp.net-mvc
ASP.NET MVC Controller总体设计  将整个ASP.NET MVC框架划分为若干个子系统,那么针对请求上下文激活目标Controller对象的子系统被我们成为Controller激活系统。在正式讨论 Controller对象具体是如何被创建爱之前,我们先来看看Controller激活系统在ASP.NET MVC中的总体设计,了解一下组成该子系统的一些基本的组件,以及它们对应的接口或者抽象类是什么。一、Controller  ..

msn聊天信息记录乱码解决方法

评论(0)浏览(127)分类:操作系统及应用软件
msn聊天信息记录乱码解决方法  今天用msn给一个同事发送信息时,在他那里显示的是乱码。msn聊天记录出现乱码可能是安装了msn shell插件,并且启用了加密聊天记录的功能的问题。  我就是取消了msn shell的聊天记录加密功能后,发给这个同事的信息就没出现乱码了。

ASP.NET MVC通过URL路由多语言的支持

评论(0)浏览(151)分类:asp.net-mvc
ASP.NET MVC通过URL路由多语言的支持  对于一个需要支持多语言的Web应用,一个很常见的使用方式就是通过请求地址来控制界面 呈现所基于的语言文化,比如我们在表示请求地址的URL中将上语言文化代码(比如en或者en-US)来指导服务器应该采用怎样的语言来显示界面的内容。 对于一个ASP.NET MVC应用来说,很容易通过URL路由来实现这样一个功能。  在具体介绍实现之前,我们通过一个..

ASP.NET MVC路由实现原理-HttpHandler的动态映射

评论(0)浏览(376)分类:asp.net-mvc
ASP.NET MVC路由实现原理-HttpHandler的动态映射  一个请求最终通过一个具体的HttpHandler进行处理,而我们熟悉的用于 表示一个Web页面的Page对象就是一个HttpHandler,被用于处理基于某个.aspx文件的请求。我们可以通过HttpHandler的动态 映射来实现请求地址与物理文件路径之间的分离。实际上ASP.NET路由系统就是采用了这样的实现原理。如下图所示,ASP.NET路由系统通过一个注册 到当前应用..

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路由扩展:路由映射

评论(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路由规则生成URL

评论(0)浏览(139)分类:asp.net-mvc
ASP.NET mvc路由规则生成URL  ASP.NET 的路由系统主要具有两个方面的应用,其一就是通过注册URL模板与物理文件路径的匹配实现请求地址和物理地址的分离;另一个则是通过注册的路由规测生成一 个相应的URL。后者通过调用RouteCollection类型的GetVirtualPath方法来实现。[源代码从这里下载]  如 下面的代码片断所示,GetVirtualPath定义了两个GetVirtualPath方法重载,它..

ASP.NET mvc路由映射

评论(0)浏览(233)分类:asp.net-mvc
ASP.NET mvc路由映射  通过RouteTable的静态属性Routes得到一个基于应用的全局路由表,通过上 面的介绍我们知道这是一个类型的RouteCollection的集合对象,我们可以通过调用它的MapPageRoute进行路由映射,即注册URL模 板与某个物理文件的匹配关系。路由注册的核心就是在全局路由表中添加一个Route对象,该对象的绝大部分属性都可以通过MapPageRoute方法的 相关参..

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 Action的执行

评论(0)浏览(92)分类:asp.net-mvc
ASP.NET MVC Action的执行  作为Controller基类ControllerBase的Execute方法的核心在于对Action方法的执行和作为方法返回的ActionResult的执行,两者的执行是通过一个叫做ActionInvoker的组件来完成的。一、ActionInvoker  同样为ActionInvoker定义了一个接口IActionInvoker。如下面的代码片断所示,该接口定义了一个唯一的方法 InvokeAction用于执行指定名称的Actio..

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 URL路由

评论(0)浏览(134)分类: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的..

建立在“伪”MVC框架上的Web应用

评论(0)浏览(148)分类:asp.net-mvc
建立在“伪”MVC框架上的Web应用  ASP.NET由于采用了管道式设计,具有很好的扩展性,而整个ASP.NET MVC应用框架就是通过扩展ASP.NET实现的。通过上面对ASP.NET管道设计的介绍,我们知道ASP.NET的扩展点只要体现在 HttpMoudle和HttpHandler这两个核心组建之上,实际上整个ASP.NET MVC框架就是通过自定义的HttpMoudle(UrlRoutingModule)和HttpHandler(MvcHandler) 实现的。..

MVC、MVP以及Model2[下篇]

评论(0)浏览(147)分类:asp.net-mvc
MVC、MVP以及Model2[下篇]  MVC、MVP以及Model2[上篇]通过采用MVC模式,我们可以将可视化UI元素的呈现、UI处理逻辑和业务逻辑分别定义在View、Controller和Model中,但是对于三者之 间的交互,MVC并没有进行严格的限制。最为典型的就是允许View和Model绕开Controller进行直接交互,View不仅仅可以通过调用 Model获取需要呈现给用户的数据,Model也可以直接通知View让其..

MVC、MVP以及Model2[上篇]

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

IIS与ASP.NET管道

评论(0)浏览(207)分类:asp.net-mvc
IIS与ASP.NET管道  下面三篇详细介绍IIS架构和ASP.NET运行时管道的文章,深入介绍了IIS 5.x与IIS 6.0HTTP请求的监听与分发机制,以及ASP.NET运行时管道对HTTP请求的处理流程:IIS 和 ASP.NET ISAPIASP.NET Http Runtime Pipeline[上篇]ASP.NET Http Runtime Pipeline[下篇]  为了剖析基于IIS的WCF服务寄宿(Hosting),再次对相关内容进行了研究,在这里一并..

ASP.NET Http Runtime Pipeline[下篇]

评论(0)浏览(107)分类: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 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(确切地说应..

IIS 和 ASP.NET ISAPI

评论(0)浏览(167)分类:asp.net-mvc
IIS 和 ASP.NET ISAPI  ASP.NET 从最初的接收到Http request到最终生成Response的整个流程到底是怎样的?这个问题涉及到IIS和ASP.NETASP.NET Runtime的处理模型的问题。  这篇文章大体分为两个部分,第一部分谈IIS的两个不同的版本IIS 5.x 和 IIS 6(虽然IIS 7已经Release很长时间了,而且较之前两个版本发生了非常大的变化,由于本人缺乏对IIS 7深入的了解,所以..

asp.net mvc详解目录

评论(0)浏览(148)分类:asp.net-mvc
asp.net mvc详解目录一、ASP.NET + MVCIIS与ASP.NET管道MVC、MVP以及Model2[上篇]MVC、MVP以及Model2[下篇]建立在伪MVC框架上的Web应用asp.net mvc URL路由ASP.NET MVC Controller的激活ASP.NET MVC Action的执行二、URL 路由ASP.NET mvc URL与物理文件的分离ASP.NET mvc路由映射ASP.NET mvc路由规则生成URLASP.NET MVC路由扩展:路由映射ASP.NET MVC路由扩展:链接..

.net remoting-创建CAO Service Factory使接口和实现相互分离

评论(0)浏览(107)分类:Asp.Net/C#/WCF
.net remoting-创建CAO Service Factory使接口和实现相互分离  对于 Remoting,有两种不同的Activation模式:Server Activation和Client Activation。他我在前面的系列文章中分析、比较了这两种不同激活方式的区别:Marshaling方式,远程对象创建的时机,状态的保持,生命 周期的管理。 在编程模式方面Server Activation和Client Activation也具有一定的差异:为一个SAO(server activated object)和一个..

.net remoting-远程对象的生命周期管理[上篇]

评论(0)浏览(117)分类:Asp.Net/C#/WCF
.net remoting-远程对象的生命周期管理[上篇]1.CLR的垃圾回收机制  在.NET中提到对象的生命周期,我们会不由自 主地想到CLR的垃圾回收。在运行一个.NET程序过程中,我们通过某种方式,比如通过new操作符,通过反序列化,通过反射机制,创建一个对象,CLR 在为这个对象在托管堆中开辟一块内存空间。随着程序的运行,创建的对象越来越多,托管堆中的可用的内存越来越少,必须有一种机制来判..

.net remoting-Marshaling & Activation[下篇]

评论(0)浏览(77)分类:Asp.Net/C#/WCF
.net remoting-Marshaling & Activation[下篇]  在.net remoting-Marshaling Activation[上篇], 花了大量的文字来来描述了Remote Object如何通过Marshaling的过程从Server端所在的Application Domain经过相关的转换(Transformation)传递到Client所在的Application Domain供Client调用; 以及Client的调用请求如何在Activate处于Server端Application Domain的Remote Object。大体的要点..