|
|
|
Asp.Net 2.0 Page Directives |
|
|
|
Asp.Net Page directives are something that is a part of every asp.net pages. Page
directives are instructions, inserted at the top of an ASP.NET page, to control
the behavior of the asp.net pages. So it is type of mixed settings related to how
a page should render and processed.
Here’s an example of the page directive.,
|
|
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sample.aspx.cs" Inherits="Sample" Title="Sample Page Title" %> |
|
|
|
Totally there are 11 types of Pages directives in Asp.Net 2.0. Some directives are
very important without which we cannot develop any web applications in Asp.Net.
Some directives are used occasionally according to its necessity. When used, directives
can be located anywhere in an .aspx or .ascx file, though standard practice is to
include them at the beginning of the file. Each directive can contain one or more
attributes (paired with values) that are specific to that directive. |
|
Asp.Net web form page framework supports the following directives
1. @Page
2. @Master
3. @Control
4. @Register
5. @Reference
6. @PreviousPageType
7. @OutputCache
8. @Import
9. @Implements
10. @Assembly
11. @MasterType
@Page Directive
The @Page directive enables you to specify attributes and values for an Asp.Net
Page to be used when the page is parsed and compiled. Every .aspx files should include
this @Page directive to execute. There are many attributes belong to this directive.
We shall discuss some of the important attributes here.
a. AspCompat: When set to True, this allows to the page to be executed
on a single-threaded apartment. If you want to use a component developed in VB 6.0,
you can set this value to True. But setting this attribute to true can cause your
page's performance to degrade.
b. Language: This attribute tells the compiler about the language
being used in the code-behind. Values can represent any .NET-supported language,
including Visual Basic, C#, or JScript .NET.
c. AutoEventWireup: For every page there is an automatic way to
bind the events to methods in the same .aspx file or in code behind. The default
value is true.
d. CodeFile: Specifies the code-behid file with which the page
is associated.
e. Title: To set the page title other than what is specified in the master page.
f. Culture: Specifies the culture setting of the page. If you set
to auto, enables the page to automatically detect the culture required for the page.
g. UICulture: Specifies the UI culture setting to use for the page.
Supports any valid UI culture value.
h. ValidateRequest: Indicates whether request validation should
occur. If set to true, request validation checks all input data against a hard-coded
list of potentially dangerous values. If a match occurs, an HttpRequestValidationException
Class is thrown. The default is true. This feature is enabled in the machine configuration
file (Machine.config). You can disable it in your application configuration file
(Web.config) or on the page by setting this attribute to false.
i. Theme: To specify the theme for the page. This is a new
feature available in Asp.Net 2.0.
j. SmartNavigation: Indicates the smart navigation feature of the
page. When set to True, this returns the postback to current position of the page.
The default value is false.
|
k. MasterPageFile: Specify the location of the MasterPage file
to be used with the current Asp.Net page.
l. EnableViewState: Indicates whether view state is maintained
across page requests. true if view state is maintained; otherwise, false. The default
is true.
m. ErrorPage: Specifies a target URL for redirection if an unhandled
page exception occurs.
n. Inherits: Specifies a code-behind class for the page to inherit.
This can be any class derived from the Page class.
There are also other attributes which are of seldom use such as Buffer, CodePage,
ClassName, EnableSessionState, Debug, Description, EnableTheming, EnableViewStateMac,
TraceMode, WarningLevel, etc. Here is an example of how a @Page directive looks
|
|
|
|
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Sample.aspx.cs" Inherits="Sample"
Title="Sample Page Title" %> |
|
|
|
@Master Directive
The @Master directive is quite similar to the @Page directive. The @Master directive
belongs to Master Pages that is .master files. The master page will be used in conjunction
of any number of content pages. So the content pages can the inherits the attributes
of the master page. Even though, both @Page and @Master page directives are similar,
the @Master directive has only fewer attributes as follows
a. Language: This attribute tells the compiler about the language
being used in the code-behind. Values can represent any .NET-supported language,
including Visual Basic, C#, or JScript .NET.
b. AutoEventWireup: For every page there is an automatic way to
bind the events to methods in the same master file or in code behind. The default
value is True.
c. CodeFile: Specifies the code-behid file with which the MasterPage
is associated.
d. Title: Set the MasterPage Title.
e. MasterPageFile: Specifies the location of the MasterPage file
to be used with the current MasterPage. This is called as Nested Master Page.
f. EnableViewState: Indicates whether view state is maintained
across page requests. true if view state is maintained; otherwise, false. The default
is true.
g. Inherits: Specifies a code-behind class for the page to inherit.
This can be any class derived from the Page class.
Here is an example of how a @Master directive looks
|
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="WebMaster.master.cs" Inherits="WebMaster" %> |
|
|
|
@Control Directive
The @Control directive is used when we build an Asp.Net user controls. The @Control
directive helps us to define the properties to be inherited by the user control.
These values are assigned to the user control as the page is parsed and compiled.
The attributes of @Control directives are
a. Language: This attribute tells the compiler about the language
being used in the code-behind. Values can represent any .NET-supported language,
including Visual Basic, C#, or JScript .NET.
b. AutoEventWireup: For every page there is an automatic way to
bind the events to methods in the same .ascx file or in code behind. The default
value is true.
c. CodeFile: Specifies the code-behid file with which the user
control is associated.
d. EnableViewState: Indicates whether view state is maintained
across page requests. true if view state is maintained; otherwise, false. The default
is true.
e. Inherits: Specifies a code-behind class for the page to inherit.
This can be any class derived from the Page class.
f. Debug: Indicates whether the page should be compiled with debug
symbols.
g. Src: Points to the source file of the class used for the code
behind of the user control.
The other attributes which are very rarely used is ClassName, CompilerOptions, ComplieWith,
Description, EnableTheming, Explicit, LinePragmas, Strict and WarningLevel.
Here is an example of how a @Control directive looks
|
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyControl.ascx.cs"
Inherits=" MyControl " %> |
|
|
|
|
|
@Register Directive
The @Register directive associates aliases with namespaces and class
names for notation in custom server control syntax. When you drag and drop a user
control onto your .aspx pages, the Visual Studio 2005 automatically creates an @Register
directive at the top of the page. This register the user control on the page so
that the control can be accessed on the .aspx page by a specific name.
The main atttribues of @Register directive are
a. Assembly: The assembly you are associatin with the TagPrefix.
b. Namespace: The namspace to relate with TagPrefix.
c. Src: The location of the user control.
d. TagName: The alias to relate to the class name.
e. TagPrefix: The alias to relate to the namespace.
Here is an example of how a @Register directive looks
|
<%@ Register Src="Yourusercontrol.ascx" TagName=" Yourusercontrol " TagPrefix="uc1"
Src="~\usercontrol\usercontrol1.ascx" %> |
|
@Reference Directive
The @Reference directive declares that another
asp.net page or user control should be complied along with the current page or user
control. The 2 attributes for @Reference direcive are
a. Control: User control that ASP.NET should dynamically compile
and link to the current page at run time.
b. Page: The Web Forms page that ASP.NET should dynamically compile
and link to the current page at run time.
c. VirutalPath: Specifies the location of the page or user control
from which the active page will be referenced.
Here is an example of how a @Reference directive looks
|
<%@ Reference VirutalPath="YourReferencePage.ascx" %> |
|
@PreviousPageType Directive
The @PreviousPageType is a new directive makes excellence in asp.net 2.0 pages. The concept of cross-page posting between Asp.Net pages is achieved by this directive. This directive is used to specify the page from which the cross-page posting initiates. This simple directive contains only two attibutes
a. TagName: Sets the name of the derived class from which the postback
will occur.
b. VirutalPath: sets the location of the posting page from which
the postback will occur.
Here is an example of @PreviousPageType directive
|
<%@ PreviousPageType VirtualPath="~/YourPreviousPageName.aspx" %> |
|
@OutputCache Directive
The @OutputCache directive controls the output caching policies of the Asp.Net page
or user control. You can even cache programmatically through code by using Visual
Basic .NET or Visual C# .NET. The very important attributes for the @OutputCache
directive are as follows
Duration: The duration of time in seconds that the page or user
control is cached.
|
Location: To specify the location to store the output cache. To
store the output cache on the browser client where the request originated set the
value as ‘Client’. To store the output cache on any HTTP 1.1 cache-capable devices
including the proxy servers and the client that made request, specify the Location
as Downstream. To store the output cache on the Web server, mention the location
as Server.
VaryByParam: List of strings used to vary the output cache, separated
with semi-colon.
VaryByControl: List of strings used to vary the output cache of
a user Control, separated with semi-colon.
VaryByCustom: String of values, specifies the custom output caching
requirements.
VaryByHeader: List of HTTP headers used to vary the output cache,
separated with semi-colon.
|
|
|
The other attribues which is rarely used are CacheProfile, DiskCacheable, NoStore,
SqlDependency, etc.
|
<%@ OutputCache Duration="60" Location="Server" VaryByParam="None" %> |
To turn off the output cache for an ASP.NET Web page at the client location and
at the proxy location, set the Location attribute value to none, and then set the
VaryByParam value to none in the @ OutputCache directive. Use the following code
samples to turn off client and proxy caching.
|
<%@ OutputCache Location="None" VaryByParam="None" %> |
|
|
|
@Import Directive
The @Import directive allows you to specify any namespaces to the imported to the Asp.Net pages or user controls. By importing, all the classes and interfaces of the namespace are made available to the page or user control. The example of the @Import directive
<%@ Import namespace=”System.Data” %>
<%@ Import namespace=”System.Data.SqlClient” %> |
|
@Implements Directive
The @Implements directive gets the Asp.Net page to implement a specified .NET framework interface. The only single attribute is Interface, helps to specify the .NET Framework interface. When the Asp.Net page or user control implements an interface, it has direct access to all its events, methods and properties.
|
<%@ Implements Interface=”System.Web.UI.IValidator” %> |
|
@Assembly Directive
The @Assembly directive is used to make your ASP.NET page aware of external components. This directive supports two attributes:
a.
Name: Enables you specify the name of an assembly you want to attach to the page. Here you should mention the filename without the extension.
b. Src: represents the name of a source code file
|
<%@ Assembly Name="YourAssemblyName" %> |
|
@MasterType Directive
To access members of a specific master page from a content page, you can create a strongly typed reference to the master page by creating a @MasterType directive.
This directive supports of two attributes such as TypeName and VirtualPath.
a.
TypeName: Sets the name of the derived class from which to get strongly typed references or members.
b.
VirtualPath: Sets the location of the master page from which the strongly typed references and members will be retrieved.
If you have public properties defined in a Master Page that you'd like to access in a strongly-typed manner you can add the MasterType directive into a page as shown next
<%@ MasterType VirtualPath="MasterPage.master" %>
this.Master.HeaderText = "Label updated using MasterType directive with VirtualPath
attribute";
|
|
|
|
|
|
|
|
|
|