ASP.NET ViewEngine的发展以及应用

(一)MVC1版本的ViewEngine

从上图,我们可以知道:(1)当客户端发送请求时,DefaultControllerFactory根据RequestContext对象 和ControllerName来生成我们的Controller。Controller的ViewDataDictionary将保存相关的数据,并且通过 ViewEngine传递给View。

public virtual IController CreateController(RequestContext 

requestContext, string controllerName)
{
    Type controllerType = this.GetControllerType(requestContext, controllerName); //type = 

this.GetControllerTypeWithinNamespaces(requestContext.RouteData.Route, controllerName, 

namespaces);
    return this.GetControllerInstance(requestContext, controllerType);
}

protected internal virtual IController GetControllerInstance(RequestContext requestContext, Type 

controllerType)
{
    return  (IController) Activator.CreateInstance(controllerType);//反射
}

(2)在我们以前的MVC版本中,Controller拥有ViewEngine的属性。我们先看下下述的代码: ViewEngine依据ViewContext,ViewLocator怎么处理View以及响应客户端??

public void RenderView(ViewContext viewContext)
        {
            string viewLocation = ViewLocator.GetViewLocation(viewContext, 

viewContext.ViewName);//根据ViewContext以及相关内容获取view的相对文件路径
            string viewPath = viewContext.HttpContext.Request.MapPath(viewLocation););//获取view

的绝对文件路径
            string viewTemplate = File.ReadAllText(viewPath);//读取文件内容
            IRenderer renderer = new PrintRenderer();
            viewTemplate = renderer.Render(viewTemplate, viewContext);//正则表达式处理相应内容,

难点!
            viewContext.HttpContext.Response.Write(viewTemplate);//发送响应到客户端
        }

从上面的代码中,我们能够清晰的看到,总体框架就是这么赤裸裸的“请求--->响应 ”。虽然代码是过去版本的,但是依旧能够使我们比较容易的理解整个过程的细节。

关于以前版本的 自定义ViewEngine请参考http://blog.maartenballiauw.be/post/2008/05/Creating-a-custom-ViewEngine- for-the-ASPNET-MVC-framework.aspx

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索版本
,以便于您获取更多的相关知识。

时间: 2024-09-27 00:30:50

ASP.NET ViewEngine的发展以及应用的相关文章

走近asp.net

asp.net|asp.net 在这个专题里我们将介绍asp.net,Asp.net又叫asp+,他不是asp的简单升级,而是 microsoft推出的新一代Active Server Pages.ASP.net是微软发展的新的体系结.NET的一部分,其中全新的技术架构会让每个人的编程生活变得更的简单.故我们特地找了一些资料向大家介绍这项技术. 首先,需要特别指出的是,ASP.NET不仅仅只是一个有新界面并且修复了一些缺憾的ASP3.0升级版本(就象大家曾经用3.0于2.0版做比较一样).更为重

ASP的起源

    Microsoft的动态服务器网页(Active Server Pages,ASP)技术目前已发展到了3.0版.对很多人来说,用ASP来创建Windows服务器平台上的动态Web网页.整个站点和基于Web的应用程序已经成为极其自然而然的方法.在浏览器地址栏中,文件扩展名.ASP同表示动态创建的网页的文件扩展名.pl或.cgi一样,已被浏览者所接受.事实上,对于在微软的操作系统上工作的Web程序员来说,ASP正在变成一种不再令人激动的技术,而仅是一种工作方式.    这种看法的改变体现了一

微软.NET战略和ASP.NET简介(3)

asp.net|微软|战略 ?    表单应用模板 从概念上讲,在服务框架的最上面是两个应用程序模板:Windows应用程序模板和网络应用程序模板.尽管我把重点放在把微软.NET 框架用作开发网络服务和网络应用程序的一种途径上,但框架也可用于开发较传统的基于Windows的应用程序(当然,这些应用程序也能使用网络服务).编写Windows客户应用程序的开发人员可使用Win表单应用程序模板以利用Windows丰富的用户接口特点,包括现在的ActiveX控件和Windows 2000的新特点,如透明

微软.NET战略和ASP.NET简介(1)

asp.net|微软|战略 ASP.NET又叫ASP+,但并不仅仅是ASP的简单升级,而是MicroSoft推出的新一代Active Server Pages脚本语言.ASP.NET是微软发展的新型体系结构.NET的一部分,它的全新技术架构会让每一个人的网络生活都变得更简单.首先需要特别指出的是,ASP.NET不仅仅只是有了一个新界面并且修复了一些缺陷的ASP3.0的升级版本(即不同于ASP2.0升级到ASP3.0的转变).更为重要的是,ASP.NET吸收了ASP以前版本的最大优点并参照Java

ROR学习笔记(2):Asp.Net开发者看ROR

ROR集成了诸多"先进"的理念,比如mvc,模板替换,orm,实体验证,ajax,数据库迁移,session的多种保存机制...等等,也许在今天看来,这些东西都是司空见惯的,但要知道ror框架是在几年前就发布的,所以ROR一出来就一路走红,甚至一度号称"web中小型开发效率天下无敌",也不是浪得虚名的. 但是随着Asp.Net的不断进步,ROR中的这些特性也慢慢都被MS吸收进来了,比如: 1.MVC asp.net mvc已经发展到2.0了,如果ror开发者转换到a

混乱的互联网网站建设市场

企业网站建设这个领域是自从互联网进入中国以来就开始在神州大地遍地开花,从早期的几百万建站,到后来的几十万,到如今的两千三千甚至几百块的单价,演绎着网站建设市场的混乱夹杂着基础网站建设市场从业人员的血泪.     有人呼吁,进入2007年度,这个行业的同行要提高整体价格水平,甚至以房地产的开发商为学习对象,窃以为这个情况不会出现,企业网站建设市场仍将混乱下去.为什么?为什么企业网站从业人员和公司不能获得高的利润和取得良好的企业生态环境,为什么我们的大多数建站公司哀叹如今的市场真不是人做的?放眼看去

IT软件人员的技术学习内容(写给技术迷茫中的你) - 项目管理系列文章

前面笔者曾经写过一篇关于IT从业者的职业道路文章(见笔者文:IT从业者的职业道路(从程序员到部门经理) - 项目管理系列文章).然后有读者提建议说写写技术方面的路线,所以就有了本文.本文从初学者到思想者的四步方面对IT从业者的技术路线做了阐述(见笔者文:IT从业者的学习规划 - 学习者系列文章开篇),从浅到深的对技术路线需要学习的内容做了叙述,后续会对学习者系列文章进行书写,本文就当做该系列文章的一个版图吧. 对于技术路线,笔者认为,在工作之余,就该自我主动的去学习技术和业务方面的知识.一方面是

依赖属性之“风云再起”

一. 摘要 首先圣殿骑士很高兴"WPF 基础到企业应用系列" 能得到大家的关注.支持和认可.看到很多朋友留言希望加快速度的问题,我会尽力的,对你们的热情关注也表示由衷的感谢.这段时间更新慢的主要原因是因为忙着用TDD还原MONO的框架,同时也因为一直在研究云计算,所以就拖拖拉拉一直没有发布后面的文章.由于WPF整个系列是自己的一些粗浅心得和微薄经验,所以不会像写书那么面面俱到,如果有不足或者错误之处也请大家见谅.在今年之内圣殿骑士会尽量完成"WPF 基础到企业应用系列&quo

最值得学习的编程语言 Java居首

经过数据分析和研究Jobs Tractor的45000个开发人员招聘职位数据,我们得到了如下的结果:Java 8,731PHP 8,238Objective-C 5,859Java for Android 4,312SQL 3,553JavaScript 3,154Ruby 2,937C# 2,549Python 1,587C++ 1,273C 685ActionScript 674ASP.net 492Perl 224Scala 143Visual Basic 92自上一年,主要的变化如下:P