5.3 技术解惑
在本章内容中,学习了ASP.NET页面结构的基本知识。作为一名初学者,肯定会在学习过程中遇到很多疑问和困惑。为此在本节的内容中,笔者将自己学习ASP.NET页面结构的心得体会传授大家。
5.3.1 两种布局ASP.NET页面的方式
ASP.NET页面布局的方式有两种,分别是网格模式和流模式。
1.网格模式
当页面中某些元素带有坐标信息,那么浏览器会将其视为坐标标准,并采用网格来定位所有元素的位置。这样即使计算机的分辨率有所变化,浏览器如何调整,这些元素都会被定位在显示器的固定位置。
网格模式布局的最大好处是定位迅速,并且可以以网格为基准,便于页面内各元素的对齐处理。
默认情况下,正在处理的Web窗体页处于网格布局模式。在此模式下,可以在页上拖动控件并使用绝对(x和y)坐标对它们进行定位。
2.流模式
流模式是传统Web开发技术的布局模式,例如常用的ASP。此模式会在页面中从上到下、从左至右或从右到左排列元素。任何浏览器都可以显示使用此布局的HTML文档,如果调整页面的大小,页面内的所有元素将会被重新定位。
流模式布局的最大好处是容易添加静态文本。
5.3.2 @Register指令的真正用途
@Register指令的用途需要先从其本身的定义说起。无论何时在页面中添加自定义服务器组件,你都需要告诉编译器有关该空间的内容。如果编译器不知道是什么名称空间包含了该控件,或者是该名称所在的是什么空间,它就无法识别该控件,此时接口就会产生一个错误。为了给编译器所需要的信息,我们需用到@Register指令。根据自定义控件的位置的方式,有如下两种传递使用@Register指令的方式。
<%@Register tagprefix="tagprefix" Tagname="tagname" Src="pathname"%>
<%@Register tagprefix="tagprefix" Namespace="namespace" Assembly="assembly"%>
@Register指令的第一个用途是在页面中添加对用户控件的支持。其中tagprefix属性可识别用于在页面中修饰自定义服务器控件实例的字符串。例如,通过如下代码将该指令置于页面的顶端。
<%@Register TagPrefix="Ecommerce" TagName="Header" Src="UserControls/Header.ascx"%>
那么对于用在页面中的Header用户控件的每个实例来说,都必须将其前缀定为Ecommerce,例如下面的代码。
<Ecommerce:Header id="Header" runat="server"/>
另外,tagname属性可识别用来在页面中应用控件的名称。由于一个用户控件源文件UserControls/Header.ascx只能包含一个控件,因此tagname属性仅是一种允许我们引用控件的快捷方式。最后一个参数Src指明了用户控件的资源驻留的文件。
指令@Register的第二个用途是在页面中添加自定义服务器控件。这些自定义服务器控件包含在装配件中并在其中进行编译。而tagprefix属性的用途和前面一样——它定义了用于页面中的自定义服务器控件的名称空间。Namespace属性则表明了自定义控件所在的名称空间。Assembly属性表明了名称空间所在的装配件。例如,下面的代码演示了用于自定义服务器控件的指令。
<%@Register Tagprefix="Wrox" Namespace="WroxControls" Assembly="RatingMeter"%>
当在页面中使用该自定义服务器控件时,那么它就和我们在同样的位置使用的控件没有任何区别。
共有条评论 网友评论