学习笔记(一)——MVC扩展
1、视图引擎的作用,总结为两点:
ViewEngine即视图引擎, 在ASP.NET MVC中将ViewEngine的作用抽象成了 IViewEngine 接口。

默认情况下,ASP.NET
MVC提供了两个视图引擎:WebFormViewEngine和RazorViewEngine。他们都是抽象类型BuildManagerViewEngine的子类,而后者又继承自VirtualPathProviderViewEngine。
VirtualPathProviderViewEngine又继承了IViewEngine

2、为什么要对视图引擎进行扩展?
从皮肤机制来说,如果页面是通过Theme来控制布局,通过Appearances来控制样式。不同的Theme可以重新定义Layouts和View,也就是说,我们在换肤的时候,可以只更改页面的样式,也可以更改页面的Theme,但是更改Theme的话,我们的页面有可能也会发生改变。
皮肤机制在设计的时候提到,要考虑到平台功能(呈现区域),不考虑应用。也就是说,应用中的页面没有换肤这一概念,而呈现区域又分为用户空间(UserSpace)、群组(GroupSpace)、后台( ControlPanel )和频道( Channel )这4种,他们是彼此独立的呈现区域,可以独立设置自己的皮肤、导航等。所以我们的目录在设计的时候,是根据呈现区域来划分的。

但是在应用中,我们不允许他的页面影响我们的外观和背景,他的样式和布局是按照我们设置的皮肤的样式和布局来的,也就是说,我们应用的页面只有一份,不存在变换主题,应用页面的样式和布局也跟着平台的皮肤变化而变化。而且应用中的页面存放路径与平台的页面存放也会有差异。

通过查看MVC提供的视图引擎的构造函数,我们发现它的寻址路径并不支持我们的皮肤机制,为了解决这一问题,我们重写了视图引擎。


分享视频链接几学习地址:http://www.chuanke.com/6202018-166987.html
学习笔记(一)——MVC扩展的更多相关文章
- jsp学习笔记:mvc开发模式
		jsp学习笔记:mvc开发模式2017-10-12 22:17:33 model(javabe)与view层交互 view(视图层,html.jsp) controller(控制层,处理用户提交的信息 ... 
- JavaScript:学习笔记(8)——对象扩展运算符
		JavaScript:学习笔记(8)——扩展运算符 对象的扩展运算符 扩展运算符是三个点(...).用于取出参数对象的所有可遍历属性,然后拷贝到当前对象之中. 如上图所示,新建了一个对象a,然后通过扩 ... 
- <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解
		MVC 3 数据验证 Model Validation 详解 再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ... 
- KnocoutJs+Mvc+BootStrap 学习笔记(Mvc)
		Mvc 1.Html 增加扩展方法 using System.Web.Mvc; namespace KnockoutBootstrapMvc.Entensions { public static ... 
- 【Spring学习笔记-MVC-11--】Spring MVC之表单标签
		一.使用方法 1.要使用Spring MVC提供的表单标签,首先需要在视图页面添加: <%@ taglib prefix="form" uri="http://ww ... 
- ES6学习笔记(二)——字符串扩展
		相信很多人也和我一样,不喜欢这样循规蹈矩的逐条去学习语法,很枯燥乏味.主要是这样学完一遍之后,没过一段时间就忘到九霄云外了.不如实际用到的时候研究它记得牢靠,所以我就整理成笔记,加深记忆的同时便于复习 ... 
- MVC学习笔记:MVC实现用户登录验证ActionFilterAttribute用法并实现统一授权
		在项目下新建一个文件夹来专门放过滤器类,首先创建一个类LoginFilter,这个类继承ActionFilterAttribute.用来检查用户是否登录和用户权限.: using System; us ... 
- ES6-11学习笔记--对象的扩展
		属性简洁表示法 属性名表达式 Objec.is() 扩展运算符 与 Object.assign() in 对象的遍历方式 属性简洁表示法: 如果属性key跟变量名一样,可简写 let name = ... 
- 学习笔记之MVC级联及Ajax操作
		由于刚转型到MVC,MVC的架构模式很多不是很清楚,比如今天就想做个级联的操作,因为之前的ASP.NET的方式是通过:控件-->添加事件-->后台编写级联事件进行触发,但是这个MVC就不同 ... 
- ASP.NET学习笔记1—— MVC
		MVC项目文件夹说明 1.App_Data:用来保存数据文件 2.App_Start:包含ASP.NET-MVC系统启动的相关类文件 3.Controllers:存放整个项目"控制器&quo ... 
随机推荐
- 软件包管理 之 RPM 基础 《RPM 的介绍和应用》
			RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在Fedora .Redhat.Mandriva. ... 
- Discuz! 的编码规范
			http://open.discuz.net/?ac=document&page=dev_coderule 前言 本规范由编程原则组成,融合并提炼了开发人员长时间积累下来的成熟经验,意在帮助形 ... 
- ECShop商品详细页 实现尺码颜色关联显示库存数量
			效果如下: 要开模板文件 goods.dwt 把选择尺码跟颜色的代码替换成如下,(不同模板代码可能不一样,对照去替换) <!-- {foreach from=$spec.values item ... 
- Mac 下安装mitmproxy
			环境: Mac OS X 10.9.4 1. 安装 直接用pip 安装 pip install mitmproxy 发现在安装依赖包 lxml 的时候报错 In : /private/tmp/pip ... 
- 延长Toast显示时间
			---恢复内容开始--- 由于Toast的显示时间只有两种: Toast.LENGTH_SHORT: 2秒 Toast.LENGTH_LONG: 3.5秒 而且是写死的,没给开发者自定义时间的权利,所 ... 
- Golang pprof heap profile is empty
			Q: When you use `go tool pprof` get heap data, profile is empty. A: The default sampling rate is 1 s ... 
- 6x12了快2个月,累的不行……
			6x12了快2个月,累的不行…… 咱就是传说中的会iOS, Android, .NET,JAVA, JAVASCRIPT,SQL SERVER的 Full stack developer (全端工程师 ... 
- [PaPaPa][需求说明书][V0.1]
			PaPaPa软件需求说明书V0.1 前 言 我觉得我们废话不能多,废话一多的话大家就找不到重点了,其实本项目是出于技术研究的目的来开发的,大家讨论了半天决定要做社(yue)交(pao)类的项目. ... 
- AndroidTouchGalleryLibrary 优化
			AndroidTouchGalleryLibrary 是一个非常好用的库, 但是使用的时候,需要小心处理,容易引发OutOfMemoryError,同时使用UrlTouchImageView的时候, ... 
- 解析表达式到lucene.net的Query
			查询的时候有自己的查询格式,为了统一并且方便的搜索lucene.net 于是就写了个解析格式,大体上覆盖了几乎所有的lucene.net的query了.当然少了公共扩展库里包含的regexQuery, ... 
