Web Server
Web Server
ASP.NET provides validation controls to help you check Web form data entries before the data is accepted and
saved in the Database. Validation controls can be used to address the following questions.
1. Did the user enter anything?
2. Is the entry the appropriate kind of data (For example, Date of Birth should be a valid Date, Name should be a
string etc.)?
3. Is the data within a required range?(For example age cannot be greater than 100 years)
The validation controls check the validity of data entered in associated server controls on the client before the page
is posted back to the server.Most validity problems can be caught and corrected by the user without a round-trip to
the server.
Where do the ASP.NET validation controls validate data, on the Client or on the Web Server?
ASP.NET validation controls validate data first on the client and then on the web server. If a client disables
javascript on the browser then, client side validations are bypassed and validations are performed on the web
server.
Client-side validation is provided by a JScript library named WebUIValidation.js, which is downloaded separately to
the client. Validation controls also automatically provide server-side validation. Server-side validation is always
performed, whether or not client-side validation has occurred. This double-checking ensures that custom
validations are performed correctly and that client-side validation has not been circumvented.
What property of the validation control is used to specify which control to validate?
ControlToValidate property.
Are the validation controls fired on the client side if javascript is disabled on the client browser?
No, validation controls are not fired on the client side if javascript is disabled on the client browser.
Give an example of real time scenario where you might use CausesValidation property of an ASP.NET
button control?
Let us assume we have a Page that collects user information like name, age, date of birth, gender with a submit
and reset buttons. When I click the submit button the information filled on the form should be validated and saved
to the database. If I click the reset button then all the controls on the webform should default to their initial values
without validation happening.So you have to set the CausesValidation property of the reset button to false for the
validation to be bypassed. Other wise you will not be able to post back the page to the server.
How do you programatically check, if the client side validation is not bypassed by disabling the
javascript on the client browser?
We use Page.IsValid property to determine if all the validations have succeeded. For this property to return true, all
validation server controls in the current validation group must validate successfully.
Explain how a validation group works when the Page is posted by clicking a button?
During postback, the Page class's IsValid property is set based only on the validation controls in the current
validation group. The current validation group is determined by the control that caused validation to occur. For
example, if a button control with a validation group of LoginGroup is clicked, then the IsValid property will return
true if all validation controls whose ValidationGroup property is set to LoginGroup are valid.
How do you programatically force all validation controls in a particular validation group to be fired?
Call the Page.Validate(string GroupName) method and pass the name of the validation group. This will fire only the
validation controls in that validation group.
If multiple validation controls fail and this property is set to true, the control specified in the ControlToValidate
property for the first validation control receives focus.
2. Do not cast unnecessarily. Avoid duplicate casts where possible, since there is a cost associated with them.
3. Properties that return arrays are prone to code inefficiencies. Consider using a collection or making this a method.
4. To test for empty strings, check if String.Length is equal to zero. Constructs such as "".Equals(someString) and
String.Empty.Equals(someString) are less efficient than testing the string length. Replace these with checks for someString.Length
== 0.
5. Methods in the same type that differ only by return type can be difficult for developers and tools to properly recognize. When
extending a type, be sure not to define new methods that differ from base type methods only by type.
8. Use Type.TryParse rather than Convert.ToDestinationType(). For example use int.TryParse() rather than Convert.ToInt32() which
might throw an exception.
10. Consider passing base types as parameters - Using base types as parameters to methods improves re-use of these methods if
you only use methods & properties from the parameter's base class. E.g. use Stream instead of FileStream as a parameter when
only calling Stream.Read(), this makes the method work on all kind of streams instead of just File streams.
What is HTTP module?An HTTP module is an assembly that is called on every request that is made to your
application. HTTP modules are called as part of the ASP.NET request pipeline and have access to life-cycle events
throughout the request. HTTP modules let you examine incoming and outgoing requests and take action based on
the request.
What is the interface that you have to implement if you have to create a Custom HTTP Handler?
Implement IHttpHandler interface to create a synchronous handler.
Implement IHttpAsyncHandler to create an asynchronous handler.
Which class is responsible for receiving and forwarding a request to the appropriate HTTP handler?
IHttpHandlerFactory Class
Can you create your own custom HTTP handler factory class?Yes, we can create a custom HTTP
handler factory class by creating a class that implements the IHttpHandlerFactory interface.
What is the difference between HTTP modules and HTTP handlers?An HTTP handler returns a response to
a request that is identified by a file name extension or family of file name extensions. In contrast, an HTTP module
is invoked for all requests and responses. It subscribes to event notifications in the request pipeline and lets you
run code in registered event handlers. The tasks that a module is used for are general to an application and to all
requests for resources in the application.
What is the common way to register an HTTP module?The common way to register an HTTP module is to
have an entry in the application's Web.config file.
Much of the functionality of a module can be implemented in a global.asax file. When do you create an
HTTP module over using Global.asax File?
You create an HTTP module over using Global.asax file if the following conditions are true
Can you enforce constarints and relations on tables inside a DataSet?Yes, the DataSet consists of a
collection of DataTable objects that you can relate to each other with DataRelation objects. You can also enforce
data integrity in the DataSet by using the UniqueConstraint and ForeignKeyConstraint objects.
Both the DataRow and DataTable classes also have AcceptChanges() methods. Calling AcceptChanges() at the
DataTable level causes the AcceptChanges method for each DataRow to be called.
When you call AcceptChanges on the DataSet, any DataRow objects still in edit-mode end their edits successfully.
The RowState property of each DataRow also changes. Added and Modified rows become Unchanged, and Deleted
rows are removed.
If the DataSet contains ForeignKeyConstraint objects, invoking the AcceptChanges method also causes the
AcceptRejectRule to be enforced.
Is there a way to clear all the rows from all the tables in a DataSet at once?Yes, use the DataSet.Clear()
method to clear all the rows from all the tables in a DataSet at once.
How do you roll back all the changes made to a DataSet since it was created? Invoke the
DataSet.RejectChanges() method to undo or roll back all the changes made to a DataSet since it was created.
What happnes when you invoke RejectChanges method, on a DataSet that contains 3 tables in it?
RejectChanges() method will be automatically invoked on all the 3 tables in the dataset and any changes that were
done will be rolled back for all the 3 tables.
When the DataTable.RejectChanges method is called, any rows that are still in edit-mode cancel their edits. New
rows are removed. Modified and deleted rows return back to their original state. The DataRowState for all the
modified and deleted rows will be flipped back to unchanged.
Caching an item incurs considerable overhead, so it’s important to choose the items to cache wisely. A Web form is
a good candidate for caching if it is frequently used and does not contain data that frequently changes. By storing a
Web form in memory, you are effectively freezing that form’s server-side content so that changes to that content
do not appear until the cache is refreshed.
The first time any user requests the Web form, the server loads the response in memory and retains that response
for 60 seconds. Any subsequent requests during that time receive the cached response.
After the cache duration has expired, the next request for the Web form generates a new response, which is then
cached for another 60 seconds. Thus the server processes the Web form once every 60 seconds at most.
You can also cache multiple responses from a single Web form using the VaryByHeaders or VaryByCustom
attribute.
The VaryByCustom attribute lets you cache different responses based on a custom string. To use VaryByCustom,
override the GetVaryByCustomString method in the Web application’s Global.asax file.
Give a simple example to show how to cache a web form without using @OutputCache directive?
For example, the following code caches the Web form’s response for 60 seconds:
private void Page_Load(object sender, System.EventArgs e)
{
// Cache this page
DateTimeLabel.Text = System.DateTime.Now.ToString();
// Set OutputCache Duration. Response.Cache.SetExpires(System.DateTime.Now.AddSeconds(60));
// Set OutputCache VaryByParams.
Response.Cache.VaryByParams["None"] = true;
// Set OutputCache Location.
Response.Cache.SetCacheability(HttpCacheability.Public);
}
What is @OutputCache directive’s Location attribute and the HttpCachePolicy object’s SetCacheability
property used for?
The @OutputCache directive’s Location attribute and the HttpCachePolicy object’s SetCacheability property
determine where Microsoft ASP.NET stores cached responses. By default, ASP.NET caches responses at any
available location that accepts cache items - the client, proxy servers, or the host server. In practice, those
locations might or might not allow caching, so you can think of the Location/SetCacheability setting as more of
a request than a command.
What are the 3 levels at which we can have a configuration file for an ASP.NET web application?
1. At the web server level : The Machine.config file located in the
Windows\Microsoft.NET\Framework\version\config directory. This sets the base configuration for all .NET
assemblies running on the server.
2. At the application or web site level : The Web.config file located in the IIS root directory.This sets the base
configuration for all Web applications and overrides settings in Machine.config.
3. In the sub directory of an application root folder : These settings override the settings in the root folder's
web.config file.
What happens when you access the Web.config file from a browser?
For security reasons, you can’t access the Web.config file from a browser. If a user requests the Web.config file
from your Web site, he or she will receive an "This type of page is not served" error message.
What happens when you access the Global.asax file from a browser?
For security reasons, you can’t access the Global.asax file from a browser. If a user requests the Global.asax file
from your Web site, he or she will receive an "This type of page is not served" error message.
What are the steps to follow to host a web application on a web server?
1. Use IIS to set up a virtual folder for the application.
2. Copy the Web application to the virtual directory.
3. Add any shared .NET components to the server’s global assembly cache (GAC).
4. Set the security permissions on the server to allow the application to access required resources.
What are the 2 components that should be installed on a web server where, the ASP.NET web
application runs?
ASP.NET Web applications run under IIS, so both IIS and the Microsoft .NET Framework must be installed on the
server before that server can host Web applications.
Don’t confuse IIS default pages with the Web Forms application start page in Visual Studio .NET. Visual Studio .NET
requires that you set a start page for each project so that the development environment knows which page to
display first during debugging. This setting has no effect on the IIS default page settings.
How do you copy the COM component to the server and register?
COM components generally provide a setup program to install or remove them from the system. If the component
doesn’t provide a setup program, you can copy it to the server and register it using the MFC RegSvr32.exe utility,
as shown below:
RegSvr32 MyComname.dll
What is GAC?
GAC stands for Global Assembly Cache. The global assembly cache (GAC) is a special subfolder within the Windows
folder that stores the shared .NET components.
What is the difference between weak-named .NET components and strong-named .NET components?
This difference is how the names are stored within the assembly. Weak names are not guaranteed to be unique
and thus cannot be shared without potentially causing conflicts. Strong names are digitally signed and provide a
public key that ensures there are no conflicts. Furthermore, .NET components with strong names can’t call
unmanaged code (such as COM components) and thus avoid potential conflicts with dependencies.
Weak-named .NET components must be individually copied to the /bin directories of the Web applications where
they are used. Strong-named .NET components can be copied into the server’s GAC
What is the account under which the ASP.NET worker process run?
By default, the ASP.NET worker process runs using the ASPNET account, which is created when you install the .NET
Framework. This account has limited privileges, which can cause permission-denied errors if your application writes
files or tries to read files outside the current Web application’s boundaries.
What are the 3 ways in which you can modify the additional permissions required by your application.?
1. Grant the ASPNET user access to the required files. To use this option, the server must be using the Windows
NT file system(NTFS).
2. Change the group the ASPNET user belongs to.
3. Use impersonation to run the process as another user.
Why is it not a good idea to add ASPNET user to the Administrators group?
Adding the ASPNET user to the Administrators group gives your Web application full privileges on the server;
however, it also poses a potential security risk because outside users might be able to manipulate your application
to hack your server.
How do you impersonate the ASP.NET worker process?
To use impersonation to run the ASP.NET worker process as a user other than ASPNET, set the identity element’s
impersonation attribute in the application’s Web.config file.
What is a ContentPlaceHolder?
ContentPlaceHolder is a region where replaceable content will appear.
Can the content page contain any other markup outside of the Content control?
No.
What are the 3 levels at which content pages can be attached to Master Page?
At the page level - You can use a page directive in each content page to bind it to a master page
At the application level - By making a setting in the pages element of the application's configuration file
(Web.config), you can specify that all ASP.NET pages (.aspx files) in the application automatically bind to a master
page.
At the folder level - This strategy is like binding at the application level, except that you make the setting in a
Web.config file in one folder only. The master-page bindings then apply to the ASP.NET pages in that folder.
What is @MasterType directive used for?
@MasterType directive is used to create a strongly typed reference to the master page.
At what stage of page processing master page and content page are merged?
During the initialization stage of page processing, master page and content page are merged.
Can you access non public properties and non public methods of a master page inside a content page?
No, the properties and methods of a master page must be public in order to access them on the content page.
From the content page code how can you reference a control on the master page?
Use the FindControl() method as shown in the code sample below.
void Page_Load()
{
// Gets a reference to a TextBox control inside
// a ContentPlaceHolder
ContentPlaceHolder ContPlaceHldr = (ContentPlaceHolder)Master.FindControl ("ContentPlaceHolder1");
if(ContPlaceHldr != null)
{
TextBox TxtBox = (TextBox)ContPlaceHldr.FindControl("TextBox1");
if(TxtBox != null)
{
TxtBox.Text = "TextBox Present!";
}
}
// Gets a reference to a Label control that not in
// a ContentPlaceHolder
Label Lbl = (Label)Master.FindControl("Label1");
if(Lbl != null)
{
Lbl.Text = "Lable Present";
}
}
Can you access controls on the Master Page without using FindControl() method?
Yes, by casting the Master to your MasterPage as shown in the below code sample.
protected void Page_Load(object sender, EventArgs e)
{
MyMasterPage MMP = this.Master;
MMP.MyTextBox.Text = "Text Box Found";
}
Passport Authentication
What is Passport Authentication?
Passport authentication identifies users via Microsoft Passport’s single sign-on service. Microsoft Passport is
meant to provide Internet users with a single identity that they can use to visit a wide variety of Web sites that
require authentication. Information about the user is available to your application through a profile that is stored
with Microsoft.
forms Authentication
What happens when someone accesses a Web application that uses Forms authentication?
When someone accesses a Web application that uses Forms authentication, ASP.NET displays the logon
Web form specified in Web.config. Once a user is authorized, ASP.NET issues an authorization
certificate in the form of a cookie that persists for an amount of time specified by the authentication
settings in Web.config.
Which method checks the user name and password against the user list found in the credentials
element of Web.config?
The FormsAuthentication class’s Authenticate method checks the user name and password against the
user list found in the credentials element of Web.config.
What are the advantages of storing user names and passwords in a database rather than a file?
You can store user names and passwords in any type of file; however, using a database has the
following significant advantages:
1. User names can be used as primary keys to store other information about the user.
2. Databases can provide high performance for accessing user names and passwords.
3. Adding, modifying, and accessing records are standardized through SQL.
Can you encrypt user names and passwords stored in a file or a database?
Yes, you encrypt user names and passwords stored in a file or a database. You can encrypt them using
the FormsAuthentication class’s HashPasswordForStoringInConfigFile method. This method uses
the SHA1 or MD5 algorithms to encrypt data, as shown below:
Password = FormsAuthentication.HashPasswordForStoringInConfigFile(Password, "SHA1");
What is the default authentication method when you create a new Web application project?
Windows authentication is the default authentication method when you create a new Web application
project.
How do you allow or deny access to specific users using an authorization list from Web.config file, when
using windows authentication?
When the application uses Windows authentication, ASP.NET checks the project’s Web.config
authorization list to see which network users are allowed to access the application. The asterisk (*)
and question mark (?) characters have special meaning in the authorization list. The * character
indicates all users. The ? character indicates unauthenticated users.
To restrict access to specific users, list their names separated by commas in an element. When
ASP.NET checks the authorization list in Web.config, it accepts the first match that it finds. Be sure to
end the authorization list with a element to deny access to any nonapproved users.
To allow or deny access to certain groups of users, add the element to the authorization list in your
Web application’s Web.config file.
What is the user account under which an ASP.NET web application runs by default?
Web application runs under the identity of the ASPNET user account by default.
How can you set the web application to run under a specific user’s account?
You can set the application to run under a specific user’s account by setting the application’s identity
element to enable impersonation
How can you see the impersonated identity under which code is executing?
To see the impersonated identity under which code is executing, use the WindowsIdentity class’s
GetCurrent method, as shown in the sample code below
Response.Write(System.Security.Principal.WindowsIdentity.GetCurrent().Name);
The identity element can be used with any type of authentication; however, it is most useful with
Windows authentication because Windows authentication users have accounts with specific
permissions.
When do you choose between GridLayout and Flow layout for Web forms?
You use GridLayout for Web forms that have a fixed appearance. You use FlowLayout for Web forms
that incorporate text and controls.When you create controls with GridLayout, Visual Studio adds style
attributes to each control that set the position of the control.When you create controls with
FlowLayout, Visual Studio omits the style attribute.
How can you prevent users from editing Text in TextBox control on a web form?
By making the TextBox a readonly TextBox. To make a TextBox readonly set the ReadOnly property to
True.
What happens when you set the AutoPostBack property of a TextBox to true?
When AutoPostBack property is set to True, the TextBox control fires a TextChanged postback event
when the user leaves the TextBox control after changing the contents. By default, this property is set
to False and the TextChanged event is cached until some other postback event occurs.
What are the 3 values that a TextMode property of TextBox can have?
SingleLine : Single Line TextBox
MultiLine : Multi Line TextBox(scrollable)
Password : When set to Password, the text box displays dots in place of the characters typed.
How do you limit the number of characters entered by a user in the ASP.NET TextBox?
By setting the MaxLength property of the TextBox. If you set the MaxLength property to 10, a user can
enter only 10 characters into the TextBox.
//Use the Values property to assign new values to the cookie dictionary
CookieObject.Values.Add("UserName", "David");
CookieObject.Values.Add("Country", "USA");
CookieObject.Values.Add("PreviousVisit", DateTime.Now.ToString());
CookieObject.Expires = DateTime.MaxValue;
//Add the Cookie to the client machine using the Response object
Response.Cookies.Add(CookieObject);
Examples of unmanaged code include the Microsoft Win32 API, legacy DLLs and EXEs created for
Windows applications prior to the Microsoft .NET Framework, and COM objects.
What are the limitations of using Unmanaged Code from within a .NET assembly?
Performance : Although native-code DLLs can perform some operations more quickly than equivalent
code managed by the CLR, these benefits might be offset by the time it takes to marshal the data to
pass between the unmanaged procedure and the .NET assembly.
Type safety : Unlike .NET assemblies, unmanaged procedures might not be type-safe. This can affect
the reliability of your .NET application. In general, reliability is a paramount concern with ASP.NET Web
applications.
Code security : Unmanaged procedures do not use the .NET Framework’s model for code security.
Versioning:Unmanaged code does not support .NET versioning; therefore, assemblies that call
unmanaged procedures might lose the benefit of being able to coexist with other versions of the same
assembly.
List the steps in order, to use a COM object from a .NET assembly in Visual Studio?
1. Install and register the COM object on your system.
2. Open the .NET project in Visual Studio, and add a reference to the COM object, as shown in diagram
below. If the COM object does not appear on the COM tab of the Add Reference dialog box, you can add
a reference directly to the executable by clicking Browse.
3. Create an instance of the COM object in code, and use it as you would any other object.
What happens when you add a reference to a COM object from with in a dot net application?
When you add a reference to a COM object, Visual Studio automatically generates an interop assembly
for the object and places it in the project’s /bin folder. The interop assembly is created from the COM
object’s type information and contains the metadata that the CLR uses to call the unmanaged code in
the COM object. You can then use COM objects from within .NET code the same way that you use .NET
classes.
You can view this interop assembly using the Microsoft Intermediate Language Disassembler
(Ildasm.exe) included in the .NET Framework.
How do you hide Public .NET Classes and other public members from COM?
In some cases, you might want to hide selected .NET classes from COM but keep them public for use
from other .NET assemblies. The ComVisible attribute allows you to select which public .NET classes
and members are included in the generated type library. This attribute applies hierarchically for the
assembly, class, and member levels.
How do you handle exceptions between .NET and COM?
.NET handles errors through exception classes. COM handles errors through 32-bit data types called
HRESULTs. All of the .NET exception classes include HResult properties that map to COM HRESULT
codes.
If an exception occurs in a .NET object, the exception is automatically mapped to the appropriate
HRESULT and returned to COM. Similarly, if an exception occurs in a COM object, the COM HRESULT is
mapped to the appropriate exception class, which is returned to .NET, where it can be handled just like
any other exception.
If you are creating your own .NET exception classes for use with COM, be sure to set the class’s
HResult property so that the exception can be handled within COM.
Is it possible to send a webform's QueryString, ViewState, and event procedure information to another
webform?
Yes, we can use Server.Transfer or Server.Execute to send a webform's QueryString, ViewState, and
event procedure information to another webform.
For this to work you have to set the preserveForm argument to True.To be able to read one Web form’s
ViewState from another, you must first set the EnableViewStateMac attribute in the Web form’s Page
directive to False. By default, ASP.NET hashes ViewState information, and setting this attribute to False
disables that hashing so that the information can be read on the subsequent Web form.
What is the default user account under which an ASP.NET web application run on a web server?
Under the default settings, ASP.NET uses the ASPNET account to run the Web application. This means that if the
application attempts to perform any tasks that are not included in the ASPNET account’s privileges, a security
exception will occur and access will be denied.
What is the namespace where all security related classes are present?
System.Web.Security
What type of authentication can be used for Public Internet Web application?
Anonymous access. This is the common access method for most Web sites. No logon is required, and you secure
restricted resources using NTFS file permissions.
What type of authentication can be used for Private corporate Web application?
Windows authentication. Corporate users can access the Web application using their corporate network user names
and passwords. User accounts are administered using the Windows network security tools.
What type of authentication can be used for Multiple commercial Web applications?
Passport authentication. Passport authentication allows users to sign in once through a central authority. The user’s
identity is then available to any application using the Passport SDK. Customer information is maintained in a
Passport profile, rather than in a local database.
How do map .htm and .html files to the ASP.NET executable using the IIS snap-in?
To map .htm and .html files to the ASP.NET executable using the IIS snap-in, follow these steps:
1. In the IIS snap-in, select the folder containing your Web application, and then choose Properties from the Action
menu. IIS displays the Properties dialog box.
2. Click the Home Directory or Virtual Directory tab, and then click Configuration. IIS displays the Application
Configuration dialog box, as shown in the diagram below.
3. Click Add. IIS displays the Add/Edit Application Extension Mapping dialog box, as shown in the diagram below.
4. Click Browse, and select the aspnet_isapi.dll file. That file is stored in the Windows Microsoft .NET Framework
directory; the path will be something like C:\Windows\Microsoft.NET\Framework\versionnumber\aspnet_isapi.dll.
5. Type .htm in the File Extension box, and click OK.
6. Repeat steps 3 through 5 for the .html file extension. Cli
What are the steps to follow for creating and using a user control in a Web application?
1. Add a Web user control page (.ascx) to your project.
2. Draw the visual interface of the control in the designer.
3. Write code to create the control’s properties, methods, and events.
4. Use the control on a Web form by dragging it from Solution Explorer to the Web form on which you want to
include it.
5. Use the control from a Web form’s code by declaring the control at the module level and then using the control’s
methods, properties, and events as needed within the Web form.
What are the steps to follow to create properties and methods for the user control that you can use
from a Web form?
To create properties and methods for the user control that you can use from a Web form, follow these steps:
1. Create the public property or method that you want to make available on the containing Web form.
2. Write code to respond to events that occur for the controls contained within the user control. These event
procedures do the bulk of the work for the user control.
3. If the property or method needs to retain a setting between page displays, write code to save and restore
settings from the control’s ViewState.
What happens when you drag a user control from solution explorer and drop it on a web form?
When you drag a user control from solution explorer and drop it on a web form, Visual Studio .NET generates a
@Register directive and HTML tags to create the control on the Web form.
Custom Controls
What are composite custom controls?
Composite custom controls combine one or more server or HTML controls within a single control class, which can
be compiled along with other control classes to create an assembly (.dll) that contains a custom control library.
Once created, the custom control library can be loaded into Visual Studio .NET and used in the same way as the
standard server and HTML controls.
Composite custom controls are functionally similar to user controls, but they reside in their own assemblies, so you
can share the same control among multiple projects without having to copy the control to each project, as you
must do with user controls. However, composite controls are somewhat more difficult to create because you can’t
draw them visually using the Visual Studio .NET Designer.
What are the steps to follow create and use a custom control in a Web application?
1. Create a solution containing a custom control project.
2. Add a Web application project to the solution, and set it as the startup project. You will use the Web application
project to test the custom control during development.
3. Add a project reference from the Web application to the custom control project, and add an HTML @Register
directive and control element to use the custom control on a Web form.
4. Create the custom control’s visual interface by adding existing controls to it through the custom control’s
CreateChildControls method.
5. Add the properties, methods, and events that the custom control provides.
6. Build and test the custom control.
In general what is the base class for every composite custom control?
System.Web.UI.WebControls.WebControl
What are the 3 levels at which formatting can be applied with in a web application?
1. Styles can be defined in a style sheet file. Styles in a style sheet can be applied to all webforms referencing the
style sheet.
2. You can also define styles in the page’s head element. These styles can be applied to all elements on the current
page.
3. You can also define styles inline, in the HTML tag itself. Inline styles are applicable only to the HTML element in
which these styles are defined.
Inline formatting takes precedence over local formatting, which, in turn, takes precedence over global
formatting. These precedence rules are the reason style sheets are referred to as cascading.
What are the advantages of storing style definitions in a style sheet file (.css) rather than locally in
each Web form or inline with each HTML element?
1. Formatting can be maintained in one location so that you make changes only once for an entire application.
2. Several sets of parallel formatting rules can be maintained in separate style sheets for formatting output on
different devices or for different user needs. For example, an application might provide standard, enlarged-type,
and printer-friendly style sheets that the user can select at run time.
3. In general, you should use page and inline styles only when you have a really good reason to override the global
styles. Relying heavily on page and inline styles can make it difficult to maintain the formatting in a Web
application.
1. Open the style sheet in Visual Studio. Visual Studio .NET displays the style definitions in the Document window
and an outline of the style sheet in the Tool window
2. Select the style to modify from the Tool window. Visual Studio .NET displays the definition for that style in the
Document window.
3. Right-click in the style definition or right-click the style in the Tool window, and select Build Style from the
shortcut menu. Visual Studio .NET displays the Style Builder Wizard.
4. Use the Style Builder to compose the formatting that you want to add or modify in the selected style, and then
click OK.
5. When you have finished, you’ll see that the Style Builder adds the new or modified style attributes to the style
definition.
When you create a style rule for a class, Visual Studio .NET adds a style definition to the style sheet using
a .classnameidentifier.
You apply the style class to HTML elements by using the class attribute. You apply the style to server controls by
using theCssClass attribute.