第二章 用户界面元素 母版页、主题和皮肤、导航控件

母版页使用得比较多~好像没有什么值得说,就是一个控件,只不过这个母版控件有一个空间可以插入需要显示的不同内容。
1、MasterPage是从UserControl继承而来的,所以就母版页可以执行任何适用于控件的操作。
2、可以重写OnPreInit方法以编程的方式更换适用的母版页。
3、母版页可以嵌套。
4、在母版页中引用图片等资源路径的时候,可以使用服务器控件的"~"或直接使用相对母版页(.master)的相对路径。

主题(Skin)是App_Themes目录下的.skin文件,它的本质就是统一定义整个系统的某些或全部控件的公共显示属性,仅此而尓。
1、在@Page(也可以在web.config中的pages项中设置)中用 Theme 属性指定skin,则指定skin定义的属性会覆盖本地设置,如果用StyleSheetTheme指定skin,则不会覆盖本地设置。
2、可以用EnableTheming="false"来设置某个控件(页面也是一个控件)来禁止将主题应用于某个控件。
3、也可以在OnPreInit中动态改变主题。


导航控件有三个,TreeView、Menu和SiteMapPath。
1、通常使用web.sitemap的xml文件填充控件。
2、这些控件都间接依赖一个名为SiteMapProvider的类,这是一个抽象类。默认的SiteMapProvider实现的是XmlSiteMapProvider,它在根目录的web.sitemap中查找导航信息。但是只有SiteMapPath控件直接与SiteMapPovider通信,Menu和TreeView都依赖于数据源控件同提供程序通信。这使得Menu和TreeView可以用于其他场合,布置是导航方面。

控件适配器是ASP.NET 2.0引入的另外一种控件呈现的方式,本质就是自定义控件的输出(呈现)方式。
1、控件适配器类本身必须继承System.Web.UI.Adapter.ControlAdapter,这是一个看起来和Control基类极似的抽象基类,包含Init、Load、PreRender和Unload的事件方法,还有虚方法Render。在内部,当控件呈现的时候,Control基类将首先检查控件是否有相关联的控件适配器,如果有,则调用该适配器的Render方法;如果没有,则调用控件的标准Render方法。
2、要创建控件适配器必须创建一个继承ControlAdapter或其派生类WebControlAdpater的类,如果是Web控件,继承后者更合适。
3、将创建的类和控件关联起来,可以通过.browser文件中的browser元素来完成。
4、识别浏览器可以通过.browser文件(1.X中是用machine.config和web.config中的<browserCaps>元素,现在它仍然被支持)识别。
5、除用来关联控件适配器外,浏览器识别文件(.browser文件)还用于为给定的请求填充HttpBrowserCapabilities类,这个类可以通过属性Request.Browser进行访问。通过这个类可以获释发出请求的浏览器名称以及它是否支持javascript、cookies等。(即是说Request.Browser得到的浏览器属性只是本地定义的,不是对客户端实时请求得到的??)
6、CSS友好适配器:CSS-friendly ASP.NET 2.0 control adapters。它修改了一组常用控件的呈现,使其对CSS更友好!

总结:MasterPage、Theme、SiteMap controls和ControlAdapter都是模块化,可拔插的方式实现的。可以动态,方便的替换其网页网站的部分或全部功能,使网站更容易开发更人性化。

 

 

转载于:https://www.cnblogs.com/KenBlove/articles/1032723.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值