ASPTutorial

Must Watch!



MustWatch



ASP.NET Web Pages - Tutorial

Easy Learning with "Run Example"

Our "Run Example" tool displays the ASP.NET code and the HTML output simultaneously. Click on the "Run Example" button to see how it works:

Web Pages Example

<html> <body> <h1>Hello Web Pages</h1> <p>The time is @DateTime.Now</p> </body> </html> Run Example

ASP.NET Web Pages

Web Pages is one of many programming models for creating ASP.NET web sites and web applications. Web Pages provides an easy way to combine HTML, CSS, and server code: Easy to learn, understand, and use Uses an SPA application model (Single Page Application) Similar to PHP and Classic ASP VB (Visual Basic) or C# (C sharp) scripting languages In addition, Web Pages applications are easily extendable with programmable helpers for databases, videos, graphics, social networking and more.

Web Pages Tutorial

If you are new to ASP.NET, Web Pages is a perfect place to start. In this Web Pages tutorial you will learn how to combine HTML, CSS, JavaScript and server code, using server code written in VB or C# . You will also learn how to extend your web pages with programmable Web Helpers.

Web Pages Examples

Learn by examples! Because ASP.NET code is executed on the server, you cannot view the code in your browser. You will only see the output as plain HTML. At W3Schools every example displays the hidden ASP.NET code. This makes it easier for you to understand how it works. Web Pages Examples

Web Pages References

At the end of this tutorial you will find a complete set of ASP.NET references with objects, components, properties and methods. Web Pages References

ASP.NET Web Pages - Adding Razor Code

Razor Markup

Razor is a simple markup syntax for embedding server code (C# or VB) into ASP.NET web pages.

Example

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>Web Pages Demo</title> </head> <body> <h1>Hello Web Pages</h1> <p>The time is @DateTime.Now</p> </body> </html> Run example The page above contains both ordinary HTML markup and Razor markup.

Razor Syntax for C#

C# code blocks are enclosed in @{ ... } Inline expressions (variables or functions) start with @ Code statements end with semicolon Variables are declared with the var keyword, or the datatype (int, string, etc.) Strings are enclosed with quotation marks C# code is case sensitive C# files have the extension .cshtml

C# Example

<!-- Single statement block --> @{ var myMessage = "Hello World"; } <!-- Inline expression or variable --> <p>The value of myMessage is: @myMessage</p> <!-- Multi-statement block --> @{ var greeting = "Welcome to our site!"; var weekDay = DateTime.Now.DayOfWeek; var greetingMessage = greeting + " Today is: " + weekDay; } <p>The greeting is: @greetingMessage</p> Run example

Razor Syntax for VB

VB code blocks are enclosed in @Code ... End Code Inline expressions (variables or functions) start with @ Variables are declared with the Dim keyword Strings are enclosed with quotation marks VB code is not case sensitive VB files have the extension .vbhtml

VB Example

<!-- Single statement block --> @Code dim myMessage = "Hello World" End Code <!-- Inline expression or variable --> <p>The value of myMessage is: @myMessage</p> <!-- Multi-statement block --> @Code dim greeting = "Welcome to our site!" dim weekDay = DateTime.Now.DayOfWeek dim greetingMessage = greeting & " Today is: " & weekDay End Code <p>The greeting is: @greetingMessage</p> Run example

More About C# and Visual Basic

If you want to learn more about Razor, and the C# and Visual Basic programming languages: Go to the Razor section of this tutorial.

ASP.NET Web Pages - Page Layout

consistent layout.

A Consistent Look

On the Internet you will discover many web sites with a consistent look and feel: Every page have the same header Every page have the same footer Every page have the same style and layout With Web Pages this can be done very efficiently. You can have reusable blocks of content (content blocks), like headers and footers, in separate files. You can also define a consistent layout for all your pages, using a layout template (layout file).

Content Blocks

Many websites have content that is displayed on every page (like headers and footers). With Web Pages you can use the @RenderPage() method to import content from separate files. Content block (from another file) can be imported anywhere in a web page, and can contain text, markup, and code, just like any regular web page. Using common headers and footers as an example, this saves you a lot of work. You don't have to write the same content in every page, and when you change the header or footer files, the content is updated in all your pages. This is how it looks in code:

Example

<html> <body> @RenderPage("header.cshtml") <h1>Hello Web Pages</h1> <p>This is a paragraph</p> @RenderPage("footer.cshtml") </body> </html> Run example

Using a Layout Page

In the previous section, you saw that including the same content in many web pages is easy. Another approach to creating a consistent look is to use a layout page. A layout page contains the structure, but not the content, of a web page. When a web page (content page) is linked to a layout page, it will be displayed according to the layout page (template). The layout page is just like a normal web page, except from a call to the @RenderBody() method where the content page will be included. Each content page must start with a Layout directive. This is how it looks in code:

Layout Page:

<html> <body> <p>This is header text</p> @RenderBody() <p>&copy; 2014 W3Schools. All rights reserved.</p> </body> </html>

Any Web Page:

@{Layout="Layout.cshtml";} <h1>Welcome to W3Schools</h1> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laborisnisi ut aliquip ex ea commodo consequat. </p> Run example

D.R.Y. - Don't Repeat Yourself

With two ASP.NET tools, Content Blocks and Layout Pages, you can give your web applications a consistent look. These tools also save you a lot of work, since you don't have to repeat the same information on all pages. Centralizing markup, style, and code makes web applications much more manageable and easier to maintain.

Preventing Files from Being Browsed

With ASP.NET, files with a name that starts with an underscore cannot be browsed from the web. If you want to prevent your content blocks or layout files from being viewed by your users, rename the files to: _header.cshtml _footer.cshtml _Layout.cshtml

Hiding Sensitive Information

With ASP.NET, the common way to hide sensitive information (database passwords, email passwords, etc.) is to keep the information in a separate file named "_AppStart".

_AppStart.cshtml

@{ WebMail.SmtpServer = "mailserver.example.com"; WebMail.EnableSsl = true; WebMail.UserName = "username@example.com"; WebMail.Password = "your-password"; WebMail.From = "your-name-here@example.com"; } id="mypagediv2" style="position:relative;text-align:center;">

ASP.NET Web Pages - Folders

In this chapter you will learn: About Logical and Physical folder structures About Virtual and Physical names About web URLs and Paths

Logical Folder Structure

Below is a typical folder structure for an ASP.NET web pages web site: Folders The "Account" folder contains logon and security files The "App_Data" folder contains databases and data files The "Images" folder contains images The "Scripts" folder contains browser scripts The "Shared" folder contains common files (like layout and style files)

Physical Folder Structure

The physical structure for the "Images" folder at the website above might look like this on a computer: C:\Johnny\Documents\MyWebSites\Demo\Images

Virtual and Physical Names

From the example above: The virtual name of a web picture might be "Images/pic31.jpg". But the physical name is "C:\Johnny\Documents\MyWebSites\Demo\Images\pic31.jpg"

URLs and Paths

URLs are used to access files from the web: https://www.w3schools.com/html/html5_intro.asp The URL corresponds to a physical file on a server: C:\MyWebSites\w3schools\html\html5_intro.asp A virtual path is shorthand to represent physical paths. If you use virtual paths, you can move your pages to a different domain (or server) without having to update the paths.
URLhttps://www.w3schools.com/html/html5_intro.asp
Server namew3schools
Virtual path/html/html5_intro.asp
Physical pathC:\MyWebSites\w3schools\html\html5_intro.asp
The root on a disk drive is written like C:\, but the root on a web site is / (forward slash). The virtual path of a web folder is (almost) never the same as the physical folder. In your code you will, reference both the physical path and the virtual path, depending on what you are coding. ASP.NET has 3 tools for working with folder paths: the ~ operator, the Server.MapPath method, and the Href method.

The ~ Operator

To specify the virtual root in programming code, use the ~ operator. If you use the ~ operator, instead of a path, you can move your website to a different folder or location without changing any code: var myImagesFolder = "~/images"; var myStyleSheet = "~/styles/StyleSheet.css";

The Server.MapPath Method

The Server.MapPath method converts a virtual path (/default.cshtml) to a physical path that the server can understand (C:\Johnny\MyWebSited\Demo\default.cshtml). You will use this method when you need to open data files located on the server (data files can only be accessed with a full physical path): var pathName = "~/dataFile.txt"; var fileName = Server.MapPath(pathName);You will learn more about reading from (and writing to) data files on the server in the next chapter of this tutorial.

The Href Method

The Href method converts a path used in the code to a path that the browser can understand (the browser cannot understand the ~ operator). You use the Href method to create paths to resources like image files, and CSS files. You will often use this method in HTML <a>, <img>, and <link> elements: @{var myStyleSheet = "~/Shared/Site.css";} <!-- This creates a link to the CSS file. --> <link rel="stylesheet" type="text/css" href="@Href(myStyleSheet)" /> <!-- Same as : --> <link rel="stylesheet" type="text/css" href="/Shared/Site.css" /> The Href method is a method of the WebPage Object.

ASP.NET Web Pages - Global Pages

Before Web Startup: _AppStart

Most server side code are written inside individual web pages. For example, if a web page contains an input form, the web page typically contains server code for reading the data. However, by creating a page named _AppStart in the root of your site, you can have startup code executed before the site starts. If this page exists, ASP.NET runs it the first time any page in the site is requested. Typical use for _AppStart is startup code and initialization of global values like counters and global names. Note 1: _AppStart should have the same file extension as your web pages, like: _AppStart.cshtml. Note 2: _AppStart has an underscore prefix. Because of this, the files cannot be browsed directly.

Before Every Page: _PageStart

Just like _AppStart runs before your site starts, you can write code that runs before any page in each folder. For each folder in your web, you can add a file named _PageStart. Typical use for _PageStart is setting the layout page for all pages in a folder, or checking that a user is logged in before running a page.

How Does it Work?

The following diagram shows how it works: PageStart When a request comes in, ASP.NET checks whether _AppStart exists. If so, and this is the first request to the site, _AppStart runs. Then ASP.NET checks whether _PageStart exists. If so, _PageStart runs, before the requested page. If you include a call to RunPage() inside _PageStart you specify where you want the requested page to run. If not, the _PageStart runs before the requested page.

ASP.NET Web Pages - HTML Forms

controls (text boxes, check boxes, radio buttons, and pull-down lists).

Creating an HTML Input Page

Razor Example

<html> <body> @{ if (IsPost) { string companyname = Request["CompanyName"]; string contactname = Request["ContactName"]; <p>You entered: <br /> Company Name: @companyname <br /> Contact Name: @contactname </p> } else { <form method="post" action=""> Company Name:<br /> <input type="text" name="CompanyName" value="" /><br /> Contact Name:<br /> <input type="text" name="ContactName" value="" /><br /><br /> <input type="submit" value="Submit" class="submit" /> </form> } } </body> </html> Run example

Razor Example - Displaying Images

Suppose you have 3 images in your image folder, and you want to display images dynamically by the users choice. This is easily done by a little Razor code. If you have an image called "Photo1.jpg" in your images folder on your web site, you can display the image using an HTML <img> element like this: <img src="images/Photo1.jpg" alt="Sample" /> The example below shows how to display a selected picture which the user selects from a drop-down list:

Razor Example

@{ var imagePath=""; if (Request["Choice"] != null) {imagePath="images/" + Request["Choice"];} } <!DOCTYPE html> <html> <body> <h1>Display Images</h1> <form method="post" action=""> I want to see: <select name="Choice"> <option value="Photo1.jpg">Photo 1</option> <option value="Photo2.jpg">Photo 2</option> <option value="Photo3.jpg">Photo 3</option> </select> <input type="submit" value="Submit" /> @if (imagePath != "") { <p> <img src="@imagePath" alt="Sample" /> </p> } </form> </body> </html> Run example

Example explained

The server creates a variable called imagePath. The HTML page has a drop-down list (a <select> element) named Choice. It lets the user select a friendly name (like Photo 1), and passes a file name (like Photo1.jpg) when the page is submitted to the web server. The Razor code reads the value of Choice by Request["Choice"]. If it has a value the code constructs a path to the image images/Photo1.jpg, and stores it in the variable imagePath. In the HTML page there is an <img> element to display the image. The src attribute is set to the value of the imagePath variable when the page displays. The <img> element is in an if block to prevent trying to display an image with no name (like the first time the page is displayed).

ASP.NET Web Pages - Objects

The Page Object

You have already seen some Page Object methods in use: @RenderPage("header.cshtml") @RenderBody() In the previous chapter you saw two Page Object properties being used (IsPost, and Request): If (IsPost) { if (Request["Choice"] != null) {

Some Page Object Methods

MethodDescription
hrefBuilds a URL using the specified parameters
RenderBody()Renders the portion of a content page that is not within a named section (In layout pages)
RenderPage(page)Renders the content of one page within another page
RenderSection(section)Renders the content of a named section (In layout pages)
Write(object)Writes the object as an HTML-encoded string
WriteLiteralWrites an object without HTML-encoding it first.

Some Page Object Properties

PropertyDescription
IsPostReturns true if the HTTP data transfer method used by the client is a POST request
LayoutGets or sets the path of a layout page
PageProvides property-like access to data shared between pages and layout pages
RequestGets the HttpRequest object for the current HTTP request
ServerGets the HttpServerUtility object that provides web-page processing methods

The Page Property (of the Page Object)

The Page property of the Page Object, provides property-like access to data shared between pages and layout pages. You can use (add) your own properties to the Page property: Page.Title Page.Version Page.anythingyoulike The pages property is very helpful. For instance, it makes it possible to set the page title in content files, and use it in the layout file:

Home.cshtml

@{ Layout="~/Shared/Layout.cshtml"; Page.Title="Home Page" } <h1>Welcome to W3Schools</h1> <h2>Web Site Main Ingredients</h2> <p>A Home Page (Default.cshtml)</p> <p>A Layout File (Layout.cshtml)</p> <p>A Style Sheet (Site.css)</p>

Layout.cshtml

<!DOCTYPE html> <html> <head> <title>@Page.Title</title> </head> <body> @RenderBody() </body> </html> id="mypagediv2" style="position:relative;text-align:center;">

ASP.NET Web Pages - Files

Working with Text Files

Sometimes you will want to access data stored in text files. Text files used to store data is often called flat files. Common flat file formats are .txt, .xml, and .csv (comma-delimited values). In this chapter you will learn: How to read and display data from a text file

Add a Text File Manually

In the example to follow, you will need a text file to work with. On your web site, if you don't have an App_Data folder, create one. In the App_Data folder, create a new file named Persons.txt. Add the following content to the file:

Persons.txt

George,Lucas Steven,Spielberg Alfred,Hitchcock

Displaying Data from a Text File

The example below shows how to display data from a text file:

Example

@{ var dataFile = Server.MapPath("~/App_Data/Persons.txt"); Array userData = File.ReadAllLines(dataFile); } <!DOCTYPE html> <html> <body> <h1>Reading Data from a File</h1> @foreach (string dataLine in userData) { foreach (string dataItem in dataLine.Split(',')) {@dataItem <text>&nbsp;</text>} <br /> } </body> </html> Run example

Example explained

Server.MapPath finds the exact text file path. File.ReadAllLines opens the text file and reads all lines from the file into an array. For each dataItem in each dataline of the array the data is displayed.

Displaying Data from an Excel File

With Microsoft Excel, you can save a spreadsheet as a comma separated text file (.csv file). When you do so, each row in the spreadsheet is saved as a text line, and each data column is separated by a comma. You can use the example above to read an Excel .csv file (just change the file name to the name of the Excel file).

ASP.NET Web Pages - Databases

What We Will Do

In this chapter we will: Create a web page to list data from a database

Displaying Data from Database

With Web Pages, you can easily display data from a database. You can connect to an existing database, or create a new database from scratch. In this example we will connect to an existing SQL Server Compact database.

Adding a Customers Page

In the "DemoWebPages" folder, create a new CSHTML file named "Products.cshtml". Replace the code in the file with the code from the example below:

Products.cshtml

@{ var db = Database.Open("SmallBakery"); var selectQueryString = "SELECT * FROM Product ORDER BY Name"; } <html> <body> <h1>Small Bakery Products</h1> <table> <tr> <th>Id</th> <th>Product</th> <th>Description</th> <th>Price</th> </tr> @foreach(var row in db.Query(selectQueryString)) { <tr> <td>@row.Id</td> <td>@row.Name</td> <td>@row.Description</td> <td align="right">@row.Price</td> </tr> } </table> </body> </html> Run example

Example Explained

The Database.Open(name) method will connect to a database in two steps: First, it searches the application's App_Data folder for a database that matches the name parameter without the file-name extension. If no file is found, it looks for a "connection string" in the application's Web.config file. (A connection string contains information about how to connect to a database. It can include a file path, or the name of an SQL database, with full user name and password) This two-step search makes it possible to test the application with a local database, and run the application on a web host using a connection string.

ASP.NET Database Object Reference

Method Description
Database.Execute(SQLstatement [, parameters]) Executes SQLstatement (with optional parameters) such as INSERT, DELETE, or UPDATE and returns a count of affected records.
Database.GetLastInsertId() Returns the identity column from the most recently inserted row.
Database.Open(filename) Database.Open(connectionStringName) Opens either the specified database file or the database specified using a named connection string from the Web.config file.
Database.OpenConnectionString(connectionString) Opens a database using the connection string. (This contrasts with Database.Open, which uses a connection string name.)
Database.Query(SQLstatement[, parameters])Queries the database using SQLstatement (optionally passing parameters) and returns the results as a collection.
Database.QuerySingle(SQLstatement [, parameters])Executes SQLstatement (with optional parameters) and returns a single record.
Database.QueryValue(SQLstatement [, parameters])Executes SQLstatement (with optional parameters) and returns a single value.

ASP.NET Web Pages - Helpers

programming tasks.

ASP.NET Helpers

ASP.NET helpers are components that can be accessed by single lines of Razor code. You can build your own helpers using Razor syntax stored as .cshtml files, or use built-in ASP.NET helpers. You will learn how to use Razor helpers in the next chapters of this tutorial. Below is a short description of some useful Razor helpers:

The WebGrid Helper

The WebGrid helper simplifies the way to display data: Automatically sets up an HTML table to display data Supports different options for formatting Supports paging (First, next, previous, last) through data Supports sorting by clicking on column headings

The Chart Helper

The "Chart Helper" can display chart images of different types with many formatting options and labels. chartchart The Chart helper can display data from arrays , from databases, or from files.

The WebMail Helper

The WebMail helper provides functions for sending email messages using SMTP (Simple Mail Transfer Protocol).

The WebImage Helper

The WebImage helper provides functionality to manage images in a web page. Keywords: flip, rotate, resize, watermark.

Third Party Helpers

With Razor you can take advantage of built-in or third party helpers to simplify the use of email, databases, multimedia, and social networks as well as many other issues like navigation and web security.

Analytics (Google)

Helper Description
Analytics.GetGoogleHtml(webPropertyId) Renders the Google Analytics JavaScript code for the specified ID.
Analytics.GetStatCounterHtml(project, security)Renders the StatCounter Analytics JavaScript code for the specified project.
Analytics.GetYahooHtml(account) Renders the Yahoo Analytics JavaScript code for the specified account.

Bing

Helper Description
Bing.SearchBox([boxWidth]) Passes a search to Bing. To specify the site to search and a title for the search box, you can set the Bing.SiteUrl and Bing.SiteTitle properties. Normally you set these properties in the _AppStart page.
Bing.AdvancedSearchBox([, boxWidth] [, resultWidth] [, resultHeight] [, themeColor] [, locale])Displays Bing search results in the page with optional formatting. To specify the site to search and a title for the search box, you can set the Bing.SiteUrl and Bing.SiteTitle properties. Normally you set these properties in the _AppStart page.

Crypto

Helper Description
Crypto.Hash(string [, algorithm]) Crypto.Hash(bytes [, algorithm]) Returns a hash for the specified data. The default algorithm is sha256.

Facebook

Helper Description
Facebook.LikeButton(href [, buttonLayout] [, showFaces] [, width] [, height] [, action] [, font] [, colorScheme] [, refLabel]) Lets Facebook users make a connection to pages.

FileUpload

Helper Description
FileUpload.GetHtml([initialNumberOfFiles] [, allowMoreFilesToBeAdded] [, includeFormTag] [, addText] [, uploadText])Renders UI for uploading files.

GamerCard

Helper Description
GamerCard.GetHtml(gamerTag) Renders the specified Xbox gamer tag.

Gravatar Object Reference

Helper Description
Gravatar.GetHtml(email [, imageSize] [, defaultImage] [, rating] [, imageExtension] [, attributes]) Renders the Gravatar image for the specified email address.

Json

Helper Description
Json.Encode(object) Converts a data object to a string in the JavaScript Object Notation (JSON) format.
Json.Decode(string) Converts a JSON-encoded input string to a data object that you can iterate over or insert into a database.

LinkShare

Helper Description
LinkShare.GetHtml(pageTitle [, pageLinkBack] [, twitterUserName] [, additionalTweetText] [, linkSites]) Renders social networking links using the specified title and optional URL.

ModelState

Helper Description
ModelStateDictionary.AddError(key, errorMessage)Associates an error message with a form field. Use the ModelState helper to access this member.
ModelStateDictionary.AddFormError(errorMessage) Associates an error message with a form. Use the ModelState helper to access this member.
ModelStateDictionary.IsValid Returns true if there are no validation errors. Use the ModelState helper to access this member.

ObjectInfo

Helper Description
ObjectInfo.Print(value [, depth] [, enumerationLength])Renders the properties and values of an object and any child objects.

Recaptcha

Helper Description
Recaptcha.GetHtml([, publicKey] [, theme] [, language] [, tabIndex]) Renders the reCAPTCHA verification test.
ReCaptcha.PublicKey ReCaptcha.PrivateKeySets public and private keys for the reCAPTCHA service. Normally you set these properties in the _AppStart page.
ReCaptcha.Validate([, privateKey]) Returns the result of the reCAPTCHA test.

ServerInfo

Helper Description
ServerInfo.GetHtml()Renders status information about ASP.NET Web Pages.

Twitter

Helper Description
Twitter.Profile(twitterUserName) Renders a Twitter stream for the specified user.
Twitter.Search(searchQuery) Renders a Twitter stream for the specified search text.

Video

Helper Description
Video.Flash(filename [, width, height]) Renders a Flash video player for the specified file with optional width and height.
Video.MediaPlayer(filename [, width, height])Renders a Windows Media player for the specified file with optional width and height.
Video.Silverlight(filename, width, height)Renders a Silverlight player for the specified .xap file with required width and height.

WebCache

Helper Description
WebCache.Get(key) Returns the object specified by key, or null if the object is not found.
WebCache.Remove(key) Removes the object specified by key from the cache.
WebCache.Set(key, value [, minutesToCache] [, slidingExpiration]) Puts value into the cache under the name specified by key.

WebImage

Helper Description
WebImage(path)Loads an image from the specified path.
WebImage.AddImagesWatermark(image) Adds the specified image as a watermark.
WebImage.AddTextWatermark(text) Adds the specified text to the image.
WebImage.FlipHorizontal() WebImage.FlipVertical()Flips the image horizontally or vertically.
WebImage.GetImageFromRequest() Loads an image when an image is posted to a page during a file upload.
WebImage.Resize(width, height) Resizes the image.
WebImage.RotateLeft() WebImage.RotateRight()Rotates the image to the left or the right.
WebImage.Save(path [, imageFormat]) Saves the image to the specified path.

ASP.NET Web Pages - The WebGrid Helper

Doing the HTML Yourself

In a previous chapter, you displayed database data by using razor code, and doing the HTML markup yourself:

Database Example

@{ var db = Database.Open("SmallBakery"); var selectQueryString = "SELECT * FROM Product ORDER BY Name"; } <html> <body> <h1>Small Bakery Products</h1> <table> <tr> <th>Id</th> <th>Product</th> <th>Description</th> <th>Price</th> </tr> @foreach(var row in db.Query(selectQueryString)) { <tr> <td>@row.Id</td> <td>@row.Name</td> <td>@row.Description</td> <td style="text-align:right">@row.Price</td> </tr> } </table> </body> </html> Run example

Using The WebGrid Helper

Using the WebGrid helper is an easier way to display data. The WebGrid helper: Automatically sets up an HTML table to display data Supports different options for formatting Supports paging through data Supports Sorting by clicking on column headings

WebGrid Example

@{ var db = Database.Open("SmallBakery") ; var selectQueryString = "SELECT * FROM Product ORDER BY Name"; var data = db.Query(selectQueryString); var grid = new WebGrid(data); } <html> <head> <title>Displaying Data Using the WebGrid Helper</title> </head> <body> <h1>Small Bakery Products</h1> <div id="grid"> @grid.GetHtml() </div> </body> </html> Run example

WebGrid Object Reference

Helper Description
WebGrid(data)Creates a new WebGrid object using data from a query.
WebGrid.GetHtml()Renders markup to display data in an HTML table.
WebGrid.Pager()Renders a pager for the WebGrid object.

ASP.NET Web Pages - The Chart Helper

The Chart Helper

In the previous chapters, you learned how to use an ASP.NET "Helper". You learned how to display data in a grid using the "WebGrid Helper". This chapter explains how to display data in graphical form, using the "Chart Helper". The "Chart Helper" can create chart images of different types with many formatting options and labels. It can create standard charts like area charts, bar charts, column charts, line charts, and pie charts, along with more specialized charts like stock charts. chartchart The data you display in a chart can be from an array, from a database, or from data in a file.

Chart From an Array

The example below shows the code needed to display a chart from an array of values:

Example

@{ var myChart = new Chart(width: 600, height: 400) .AddTitle("Employees") .AddSeries(chartType: "column", xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" }, yValues: new[] { "2", "6", "4", "5", "3" }) .Write(); } Run example - new Chart creates a new chart object and sets its width and height - the AddTitle method specifies the chart title - the AddSeries method adds data to the chart - the chartType parameter defines the type of chart - the xValue parameter defines x-axis names - the yValues parameter defines the y-axis values - the Write() method displays the chart

Chart From Database Data

You can run a database query and then use data from the results to create a chart:

Example

@{ var db = Database.Open("SmallBakery"); var dbdata = db.Query("SELECT Name, Price FROM Product"); var myChart = new Chart(width: 600, height: 400) .AddTitle("Product Sales") .DataBindTable(dataSource: dbdata, xField: "Name") .Write(); } Run example - var db = Database.Open opens the database (and assigns the database object to the variable db) - var dbdata = db.Query runs a database query and stores the result in dbdata - new Chart creates a chart new object and sets its width and height - the AddTitle method specifies the chart title - the DataBindTable method binds the data source to the chart - the Write() method displays the chart An alternative to using the DataBindTable method is to use AddSeries (See previous example). DataBindTable is easier to use, but AddSeries is more flexible because you can specify the chart and data more explicitly:

Example

@{ var db = Database.Open("SmallBakery"); var dbdata = db.Query("SELECT Name, Price FROM Product"); var myChart = new Chart(width: 600, height: 400) .AddTitle("Product Sales") .AddSeries(chartType:"Pie", xValue: dbdata, xField: "Name", yValues: dbdata, yFields: "Price") .Write(); } Run example

Chart From XML Data

The third option for charting is to use an XML file as the data for the chart:

Example

@using System.Data; @{ var dataSet = new DataSet(); dataSet.ReadXmlSchema(Server.MapPath("data.xsd")); dataSet.ReadXml(Server.MapPath("data.xml")); var dataView = new DataView(dataSet.Tables[0]); var myChart = new Chart(width: 600, height: 400) .AddTitle("Sales Per Employee") .AddSeries("Default", chartType: "Pie", xValue: dataView, xField: "Name", yValues: dataView, yFields: "Sales") .Write();} } Run example

Chart Object Reference

Helper Description
Chart(width, height [, template] [, templatePath]) Initializes a chart.
Chart.AddLegend([title] [, name]) Adds a legend to a chart.
Chart.AddSeries([name] [, chartType] [, chartArea] [, axisLabel] [, legend] [, markerStep] [, xValue] [, xField] [, yValues] [, yFields] [, options]) Adds a series of values to the chart.

ASP.NET Web Pages - The WebMail Helper

With the WebMail object you can easily send emails from a web page.

The WebMail Helper

The WebMail Helper makes it easy to send an email from a web application using SMTP (Simple Mail transfer Protocol).

Scenario: Email Support

To demonstrate the use of email, we will create an input page for support, let the user submit the page to another page, and send an email about the support problem.

First: Edit Your AppStart Page

If you have built the Demo application in this tutorial, you already have a page called _AppStart.cshtml with the following content:

_AppStart.cshtml

@{ WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true); } To initiate the WebMail helper, add the the following WebMail properties to your AppStart page:

_AppStart.cshtml

@{ WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true); WebMail.SmtpServer = "smtp.example.com"; WebMail.SmtpPort = 25; WebMail.EnableSsl = false; WebMail.UserName = "support@example.com"; WebMail.Password = "password-goes-here"; WebMail.From = "john@example.com"; } Properties explained: SmtpServer: The name the SMTP server that will be used to send the emails. SmtpPort: The port the server will use to send SMTP transactions (emails). EnableSsl: True, if the server should use SSL (Secure Socket Layer) encryption. UserName: The name of the SMTP email account used to send the email. Password: The password of the SMTP email account. From: The email to appear in the from address (often the same as UserName).

Second: Create an Email Input Page

Then create an input page, and name it Email_Input:

Email_Input.cshtml

<!DOCTYPE html> <html> <body> <h1>Request for Assistance</h1> <form method="post" action="EmailSend.cshtml"> <label>Username:</label> <input type="text" name="customerEmail" /> <label>Details about the problem:</label> <textarea name="customerRequest" cols="45" rows="4"></textarea> <p><input type="submit" value="Submit" /></p> </form> </body> </html> The purpose of the input page is to collect information, then submit the data to a new page that can send the information as an email.

Third: Create An Email Send Page

Then create the page that will be used to send the email, and name it Email_Send:

Email_Send.cshtml

@{ // Read input var customerEmail = Request["customerEmail"]; var customerRequest = Request["customerRequest"]; try { // Send email WebMail.Send(to:"someone@example.com", subject: "Help request from - " + customerEmail, body: customerRequest ); } catch (Exception ex ) { <text>@ex</text> } }

WebMail Object Reference - Properties

Properties Description
SmtpServerThe name the SMTP server that will send the emails
SmtpPortThe port the server will use to send SMTP emails
EnableSslTrue, if the server should use SSL encryption
UserNameThe name of the SMTP account used to send the email
PasswordThe password of the SMTP account
FromThe email to appear in the from address

WebMail Object Reference - Methods

Method Description
Send()Sends an email message to an SMTP server for delivery
The Send() method has the following parameters:
Parameter TypeDescription
toStringThe Email recipients (separated by semicolon)
subjectStringThe subject line
bodyStringThe body of the message
And the following optional parameters:
Parameter TypeDescription
fromStringThe email of the sender
ccStringThe cc emails (separated by semicolon)
filesToAttachCollectionFilenames
isBodyHtmlBooleanTrue if the email body is in HTML
additionalHeadersCollectionAdditional headers

Technical Data

Name Value
ClassSystem.Web.Helpers.WebMail
NamespaceSystem.Web.Helpers
AssemblySystem.Web.Helpers.dll

Initializing the WebMail Helper

To use the WebMail helper, you need access to an SMTP server. SMTP is the "output" part of email. If you use a web host, you probably already know the name of the SMTP server. If you work in a corporate network, your IT department can give you the name. If you are working at home, you might be able to use your ordinary email provider. In order to send an email you will need: The name of the SMTP server The port number (most often 25) An email user name An email password In the root of your web, create a page (or edit the page ) named _AppStart.cshtml. Put the following code inside the file:

_AppStart.cshtml

@{ WebMail.SmtpServer = "smtp.example.com"; WebMail.SmtpPort = 25; WebMail.EnableSsl = false; WebMail.UserName = "support@example.com"; WebMail.Password = "password"; WebMail.From = "john@example.com" } The code above will run each time the web site (application) starts. It feeds your WebMail Object with initial values. Please substitute: smtp.example.com with the name the SMTP server that will be used to send the emails. 25 with the port number the server will use to send SMTP transactions (emails). false with true, if the server should use SSL (Secure Socket Layer) encryption. support@example.com with the name of the SMTP email account used to send emails. password with the password of the SMTP email account. john@example with the email to appear in the from address. You don't have to initiate the WebMail object in your AppStart file, but you must set these properties before you call the WebMail.Send() method.

ASP.NET Web Pages - WebSecurity Object

The WebSecurity Object provides security and authentication for ASP.NET Web Pages applications. With the WebSecurity object you can create user accounts, login and logout users, reset or change passwords, and more.

WebSecurity Object Reference - Properties

Properties Description
CurrentUserId Gets the ID for the current user
CurrentUserNameGets the name of the current user
HasUserId Returns true if the current has a user ID
IsAuthenticated Returns true if the current user is logged in

WebSecurity Object Reference - Methods

Method Description
ChangePassword()Changes the password for a user
ConfirmAccount()Confirms an account using a confirmation token
CreateAccount()Creates a new user account
CreateUserAndAccount()Creates a new user account
GeneratePasswordResetToken()Generates a token that can be sent to as user by email
GetCreateDate()Gets the time the specified membership was created
GetPasswordChangeDate()Gets the date and time when password was changed
GetUserId()Gets a user ID from a user name
InitializeDatabaseConnection()Initializes the WebSecurity system (database)
IsConfirmed()Checks if a user is confirmed
IsCurrentUser()Checks if the current user matches a user name
Login()Logs the user in by setting a token in the cookie
Logout()Logs the user out by removing the token cookie
RequireAuthenticatedUser()Exits the page if the user is not an authenticated user
RequireRoles()Exits the page if the user is not a part of the specified roles
RequireUser()Exits the page if the user is not the specified user
ResetPassword()Changes a user's password using a token
UserExists()Checks if a given user exists

Initializing the WebSecurity Database

You must create or initialize an WebSecurity database before you can use the WebSecurity object in your code. In the root of your web, create a page (or edit the page ) named _AppStart.cshtml. Put the following code inside the file:

_AppStart.cshtml

@{ WebSecurity.InitializeDatabaseConnection("Users", "UserProfile", "UserId", "Email", true); } The code above will run each time the web site (application) starts. It initializes the WebSecurity database. "Users" is the name of the WebSecurity database (Users.sdf). "UserProfile" is the name of the database table that contains the user profile information. "UserId" is the name of the column that contains the user IDs (primary key). "Email" is the name of the column that contains user names. The last parameter true is a boolean value indicating that the user profile and membership tables should be created automatically if they don't exist, otherwise false. Although true indicates automatic creation of the database tables, the database itself will not be created automatically. It must exist.

The WebSecurity Database

The UserProfile table contains one record for each user, with a user ID (primary key) and the user's name (email):
UserIdEmail
1john@johnson.net
2 peter@peterson.com
3lars@larson.eut
The Membership table will contain membership information about when the user was created and if (and when) the membership was confirmed. Much like this (some columns are not shown):
User IdCreate DateConfirmation TokenIs ConfirmedLast Password FailurePasswordPassword Change
112.04.2012 16:12:17NULLTrueNULLAFNQhWfy....12.04.2012 16:12:17

Simple Membership Configuration

You might get errors using the WebSecurity object, if your site is not configured to use the ASP.NET Web Pages membership system SimpleMembership. This can occur if a hosting provider's server is configured differently than your local server. To fix this, add the following element to the site's Web.config file: <appSettings> <add key="enableSimpleMembership" value="true" /> </appSettings> id="mypagediv2" style="position:relative;text-align:center;">

ASP.NET Web Pages - Publishing the Website

1. Use the Latest Version of ASP.NET Before you continue, make sure your hosting computer runs the latest version of ASP.NET (4.0 or 4.5).

2. Copy the Web Folders

Copy your website (all folders and content) from your development computer to an application folder on your remote hosting computer (server). If your application contains data, don't copy the data (see point 4 below).

3. The DLL Files

Make sure the bin folder, on your remote hosting computer, contains the same dll files as on your development computer. After copying the bin folder, it should contain files like this: Microsoft.Web.Infrastructure.dll NuGet.Core.dll System.Web.Helpers.dll System.Web.Razor.dll System.Web.WebPages.Administration.dll System.Web.WebPages.Deployment.dll System.Web.WebPages.dll System.Web.WebPages.Razor.dll WebMatrix.Data.dll WebMatrix.WebData

4. Copy Your Data

If your application contains data or a database. For instance an SQL Server Compact database (a .sdf file in App_Data folder), consider the following: Do you want to publish your test data to the remote server? Most likely not. If you have test data on your development computer, it may overwrite production data on your remote hosting computer. If you have to copy an SQL database (.sdf file), perhaps you should delete everything in the database, and then copy the empty .sdf file from your development computer to the server. THAT'S IT. GOOD LUCK !

ASP.NET Web Pages - Examples in C# and VB

Examples in C# Examples in VB
Basic Web Pages Display Date and Time Reusable Header and Footer Basic HTML Form Examples Explained Basic Web Pages Display Date and Time Reusable Header and Footer Basic HTML Form Examples Explained
Basic C# For Loop For Each Loop While Loop Array If Condition If Else Condition Else If Condition Switch Condition Examples Explained Basic VB For Loop For Each Loop While Loop Array If Condition If Else Condition Else If Condition Select Condition Examples Explained
Working with Databases Display Database Data Display Data with WebGrid Examples Explained Working with Databases Display Database Data Display Data with WebGrid Examples Explained
Using the Chart Helper Display a Bar Chart from an Array Display a Bar Chart from a Database Display a Pie Chart from a Database Display a Pie Chart from an XML File Examples Explained Using the Chart Helper Display a Bar Chart from an Array Display a Bar Chart from a Database Display a Pie Chart from a Database Display a Pie Chart from an XML File Examples Explained
id="mypagediv2" style="position:relative;text-align:center;">

ASP.NET Web Pages - Classes

ASP.NET Classes Reference

Method Description
AsBool(), AsBool(true|false) Converts a string value to a Boolean value (true/false). Returns false or the specified value if the string does not represent true/false.
AsDateTime(), AsDateTime(value) Converts a string value to date/time. Returns DateTime. MinValue or the specified value if the string does not represent a date/time.
AsDecimal(), AsDecimal(value) Converts a string value to a decimal value. Returns 0.0 or the specified value if the string does not represent a decimal value.
AsFloat(), AsFloat(value) Converts a string value to a float. Returns 0.0 or the specified value if the string does not represent a decimal value.
AsInt(), AsInt(value) Converts a string value to an integer. Returns 0 or the specified value if the string does not represent an integer.
Href(path [, param1 [, param2]])Creates a browser-compatible URL from a local file path, with optional additional path parts.
Html.Raw(value)Renders value as HTML markup instead of rendering it as HTML-encoded output.
IsBool(), IsDateTime(), IsDecimal(), IsFloat(), IsInt()Returns true if the value can be converted from a string to the specified type.
IsEmpty()Returns true if the object or variable has no value.
IsPostReturns true if the request is a POST. (Initial requests are usually a GET.)
LayoutSpecifies the path of a layout page to apply to this page.
PageData[key], PageData[index], PageContains data shared between the page, layout pages, and partial pages in the current request. You can use the dynamic Page property to access the same data, as in the following example:
RenderBody()(Layout pages) Renders the content of a content page that is not in any named sections.
RenderPage(path, values) RenderPage(path[, param1 [, param2]]) Renders a content page using the specified path and optional extra data. You can get the values of the extra parameters from PageData by position (example 1) or key (example 2).
RenderSection(sectionName [, required = true|false])(Layout pages) Renders a content section that has a name. Set required to false to make a section optional.
Request.Cookies[key] Gets or sets the value of an HTTP cookie.
Request.Files[key]Gets the files that were uploaded in the current request.
Request.Form[key]Gets data that was posted in a form (as strings). Request[key] checks both the Request.Form and the Request.QueryString collections.
Request.QueryString[key] Gets data that was specified in the URL query string. Request[key] checks both the Request.Form and the Request.QueryString collections.
Request.Unvalidated(key) Request.Unvalidated().QueryString|Form|Cookies|Headers[key] Selectively disables request validation for a form element, query-string value, cookie, or header value. Request validation is enabled by default and prevents users from posting markup or other potentially dangerous content.
Response.AddHeader(name, value)Adds an HTTP server header to the response.
Response.OutputCache(seconds [, sliding] [, varyByParams])Caches the page output for a specified time. Optionally set sliding to reset the timeout on each page access and varyByParams to cache different versions of the page for each different query string in the page request.
Response.Redirect(path) Redirects the browser request to a new location.
Response.SetStatus(httpStatusCode) Sets the HTTP status code sent to the browser.
Response.WriteBinary(data [, mimetype])Writes the contents of data to the response with an optional MIME type.
Response.WriteFile(file) Writes the contents of a file to the response.
@section(sectionName) { content }(Layout pages) Defines a content section that has a name.
Server.HtmlDecode(htmlText) Decodes a string that is HTML encoded.
Server.HtmlEncode(text) Encodes a string for rendering in HTML markup.
Server.MapPath(virtualPath) Returns the server physical path for the specified virtual path.
Server.UrlDecode(urlText) Decodes text from a URL.
Server.UrlEncode(text) Encodes text to put in a URL.
Session[key]Gets or sets a value that exists until the user closes the browser.
ToString()Displays a string representation of the object's value.
UrlData[index]Gets additional data from the URL (for example, /MyPage/ExtraData).
id="mypagediv2" style="position:relative;text-align:center;">

ASP.NET Razor - Markup

What is Razor?

Razor is a markup syntax that lets you embed server-based code (Visual Basic and C#) into web pages. Server-based code can create dynamic web content on the fly, while a web page is written to the browser. When a web page is called, the server executes the server-based code inside the page before it returns the page to the browser. By running on the server, the code can perform complex tasks, like accessing databases. Razor is based on ASP.NET, and designed for creating web applications. It has the power of traditional ASP.NET markup, but it is easier to use, and easier to learn.

Razor Syntax

Razor uses a syntax very similar to PHP and Classic ASP. Razor: <ul> @for (int i = 0; i < 10; i++) { <li>@i</li> } </ul> PHP: <ul> <?php for ($i = 0; $i < 10; $i++) { echo("<li>$i</li>"); } ?> </ul> Classic ASP: <ul> <%for i = 0 to 10%> <li><%=i%></li> <%next%> </ul>

Razor Helpers

ASP.NET helpers are components that can be accessed by single lines of Razor code. You can build your own helpers using Razor syntax, or use built-in ASP.NET helpers. Below is a short description of some useful Razor helpers: Web Grid Web Graphics Google Analytics Facebook Integration Twitter Integration Sending Email Validation

Razor Programming Languages

Razor supports both C# (C sharp) and VB (Visual Basic).

ASP.NET Razor - C# and VB Code Syntax

Main Razor Syntax Rules for C#

Razor code blocks are enclosed in @{ ... } Inline expressions (variables and functions) start with @ Code statements end with semicolon Variables are declared with the var keyword Strings are enclosed with quotation marks C# code is case sensitive C# files have the extension .cshtml

C# Example

<!-- Single statement block --> @{ var myMessage = "Hello World"; } <!-- Inline expression or variable --> <p>The value of myMessage is: @myMessage</p> <!-- Multi-statement block --> @{ var greeting = "Welcome to our site!"; var weekDay = DateTime.Now.DayOfWeek; var greetingMessage = greeting + " Here in Huston it is: " + weekDay; } <p>The greeting is: @greetingMessage</p> Run example

Main Razor Syntax Rules for VB

Razor code blocks are enclosed in @Code ... End Code Inline expressions (variables and functions) start with @ Variables are declared with the Dim keyword Strings are enclosed with quotation marks VB code is not case sensitive VB files have the extension .vbhtml

Example

<!-- Single statement block --> @Code dim myMessage = "Hello World" End Code <!-- Inline expression or variable --> <p>The value of myMessage is: @myMessage</p> <!-- Multi-statement block --> @Code dim greeting = "Welcome to our site!" dim weekDay = DateTime.Now.DayOfWeek dim greetingMessage = greeting & " Here in Huston it is: " & weekDay End Code <p>The greeting is: @greetingMessage</p> Run example

How Does it Work?

Razor is a simple programming syntax for embedding server code in web pages. Razor syntax is based on the ASP.NET framework, the part of the Microsoft.NET Framework that's specifically designed for creating web applications. The Razor syntax gives you all the power of ASP.NET, but is using a simplified syntax that's easier to learn if you're a beginner, and makes you more productive if you're an expert. Razor web pages can be described as HTML pages with two kinds of content: HTML content and Razor code. When the server reads the page, it runs the Razor code first, before it sends the HTML page to the browser. The code that is executed on the server can perform tasks that cannot be done in the browser, for example accessing a server database. Server code can create dynamic HTML content on the fly, before it is sent to the browser. Seen from the browser, the HTML generated by server code is no different than static HTML content. ASP.NET web pages with Razor syntax have the special file extension cshtml (Razor using C#) or vbhtml (Razor using VB).

Working With Objects

Server coding often involves objects. The "DateTime" object is a typical built-in ASP.NET object, but objects can also be self-defined, a web page, a text box, a file, a database record, etc. Objects may have methods they can perform. A database record might have a "Save" method, an image object might have a "Rotate" method, an email object might have a "Send" method, and so on. Objects also have properties that describe their characteristics. A database record might have a FirstName and a LastName property (among others). The ASP.NET DateTime object has a Now property (written as DateTime.Now), and the Now property has a Day property (written as DateTime.Now.Day). The example below shows how to access some properties of the DateTime object:

Example

<table border="1"> <tr> <th width="100px">Name</th> <td width="100px">Value</td> </tr> <tr> <td>Day</td><td>@DateTime.Now.Day</td> </tr> <tr> <td>Hour</td><td>@DateTime.Now.Hour</td> </tr> <tr> <td>Minute</td><td>@DateTime.Now.Minute</td> </tr> <tr> <td>Second</td><td>@DateTime.Now.Second</td> </tr> </td> </table> Run example

If and Else Conditions

An important feature of dynamic web pages is that you can determine what to do based on conditions. The common way to do this is with the if ... else statements:

Example

@{ var txt = ""; if(DateTime.Now.Hour > 12) {txt = "Good Evening";} else {txt = "Good Morning";} } <html> <body> <p>The message is @txt</p> </body> </html> Run example

Reading User Input

Another important feature of dynamic web pages is that you can read user input. Input is read by the Request[] function, and posting (input) is tested by the IsPost condition:

Example

@{ var totalMessage = ""; if(IsPost) { var num1 = Request["text1"]; var num2 = Request["text2"]; var total = num1.AsInt() + num2.AsInt(); totalMessage = "Total = " + total; } } <html> <body style="background-color: beige; font-family: Verdana, Arial;"> <form action="" method="post"> <p><label for="text1">First Number:</label><br> <input type="text" name="text1" /></p> <p><label for="text2">Second Number:</label><br> <input type="text" name="text2" /></p> <p><input type="submit" value=" Add " /></p> </form> <p>@totalMessage</p> </body> </html> Run example

ASP.NET Razor - C# Variables

Variables

Variables are used to store data. The name of a variable must begin with an alphabetic character and cannot contain whitespace or reserved characters. A variable can be of a specific type, indicating the kind of data it stores. String variables store string values ("Welcome to W3Schools"), integer variables store number values (103), date variables store date values, etc. Variables are declared using the var keyword, or by using the type (if you want to declare the type), but ASP.NET can usually determine data types automatically.

Examples

// Using the var keyword: var greeting = "Welcome to W3Schools"; var counter = 103; var today = DateTime.Today; // Using data types: string greeting = "Welcome to W3Schools"; int counter = 103; DateTime today = DateTime.Today;

Data Types

Below is a list of common data types:
Type Description Examples
intInteger (whole numbers)103, 12, 5168
floatFloating-point number3.14, 3.4e38
decimalDecimal number (higher precision)1037.196543
boolBooleantrue, false
stringString"Hello W3Schools", "John"

Operators

An operator tells ASP.NET what kind of command to perform in an expression. The C# language supports many operators. Below is a list of common operators:
Operator Description Example
=Assigns a value to a variable.i=6
+ - * / Adds a value or variable. Subtracts a value or variable. Multiplies a value or variable. Divides a value or variable.i=5+5 i=5-5 i=5*5 i=5/5
+= -=Increments a variable. Decrements a variable.i += 1 i -= 1
==Equality. Returns true if values are equal.if (i==10)
!=Inequality. Returns true if values are not equal.if (i!=10)
< > <= >=Less than. Greater than. Less than or equal. Greater than or equal.if (i<10) if (i>10) if (i<=10) if (i>=10)
+Adding strings (concatenation)."w3" + "schools"
.Dot. Separate objects and methods.DateTime.Hour
()Parenthesis. Groups values.(i+5)
()Parenthesis. Passes parameters.x=Add(i,5)
[]Brackets. Accesses values in arrays or collections.name[3]
!Not. Reverses true or false.if (!ready)
&& ||Logical AND. Logical OR.if (ready && clear) if (ready || clear)

Converting Data Types

Converting from one data type to another is sometimes useful. The most common example is to convert string input to another type, such as an integer or a date. As a rule, user input comes as strings, even if the user entered a number. Therefore, numeric input values must be converted to numbers before they can be used in calculations. Below is a list of common conversion methods:
Method Description Example
AsInt() IsInt()Converts a string to an integer.if (myString.IsInt()) {myInt=myString.AsInt();}
AsFloat() IsFloat()Converts a string to a floating-point number.if (myString.IsFloat()) {myFloat=myString.AsFloat();}
AsDecimal() IsDecimal()Converts a string to a decimal number.if (myString.IsDecimal()) {myDec=myString.AsDecimal();}
AsDateTime() IsDateTime()Converts a string to an ASP.NET DateTime type.myString="10/10/2012"; myDate=myString.AsDateTime();
AsBool() IsBool()Converts a string to a Boolean.myString="True"; myBool=myString.AsBool();
ToString()Converts any data type to a string.myInt=1234; myString=myInt.ToString();

ASP.NET Razor - C# Loops and Arrays

For Loops

If you need to run the same statements repeatedly, you can program a loop. If you know how many times you want to loop, you can use a for loop. This kind of loop is especially useful for counting up or counting down:

Example

<html> <body> @for(var i = 10; i < 21; i++) {<p>Line @i</p>} </body> </html> Run example

For Each Loops

If you work with a collection or an array, you often use a for each loop. A collection is a group of similar objects, and the for each loop lets you carry out a task on each item. The for each loop walks through a collection until it is finished. The example below walks through the ASP.NET Request.ServerVariables collection.

Example

<html> <body> <ul> @foreach (var x in Request.ServerVariables) {<li>@x</li>} </ul> </body> </html> Run example

While Loops

The while loop is a general purpose loop. A while loop begins with the while keyword, followed by parentheses, where you specify how long the loop continues, then a block to repeat. While loops typically add to, or subtract from, a variable used for counting. In the example below, the += operator adds 1 to the variable i, each time the loop runs.

Example

<html> <body> @{ var i = 0; while (i < 5) { i += 1; <p>Line @i</p> } } </body> </html> Run example

Arrays

An array is useful when you want to store similar variables but don't want to create a separate variable for each of them:

Example

@{ string[] members = {"Jani", "Hege", "Kai", "Jim"}; int i = Array.IndexOf(members, "Kai")+1; int len = members.Length; string x = members[2-1]; } <html> <body> <h3>Members</h3> @foreach (var person in members) { <p>@person</p> } <p>The number of names in Members are @len</p> <p>The person at position 2 is @x</p> <p>Kai is now in position @i</p> </body> </html> Run example

ASP.NET Razor - C# Logic Conditions

The If Condition

C# lets you execute code based on conditions. To test a condition you use an if statement. The if statement returns true or false, based on your test: The if statement starts a code block The condition is written inside parenthesis The code inside the braces is executed if the test is true

Example

@{var price=50;} <html> <body> @if (price>30) { <p>The price is too high.</p> } </body> </html> Run example

The Else Condition

An if statement can include an else condition. The else condition defines the code to be executed if the condition is false.

Example

@{var price=20;} <html> <body> @if (price>30) { <p>The price is too high.</p> } else { <p>The price is OK.</p> } </body> </html> Run example Note: In the example above, if the first condition is true, it will be executed. The else condition covers "everything else".

The Else If Condition

Multiple conditions can be tested with an else if condition:

Example

@{var price=25;} <html> <body> @if (price>=30) { <p>The price is high.</p> } else if (price>20 && price<30) { <p>The price is OK.</p> } else { <p>The price is low.</p> } </body> </html> Run example In the example above, if the first condition is true, it will be executed. If not, then if the next condition is true, this condition will be executed. You can have any number of else if conditions. If none of the if and else if conditions are true, the last else block (without a condition) covers "everything else".

Switch Conditions

A switch block can be used to test a number of individual conditions:

Example

@{ var weekday=DateTime.Now.DayOfWeek; var day=weekday.ToString(); var message=""; } <html> <body> @switch(day) { case "Monday": message="This is the first weekday."; break; case "Thursday": message="Only one day before weekend."; break; case "Friday": message="Tomorrow is weekend!"; break; default: message="Today is " + day; break; } <p>@message</p> </body> </html> Run example The test value (day) is in parentheses. Each individual test condition has a case value that ends with a colon, and any number of code lines ending with a break statement. If the test value matches the case value, the code lines are executed. A switch block can have a default case (default:) for "everything else" that runs if none of the cases are true.

ASP.NET Razor - VB Variables

Variables

Variables are used to store data. The name of a variable must begin with an alphabetic character and cannot contain whitespace or reserved characters. A variable can be of a specific type, indicating the kind of data it stores. String variables store string values ("Welcome to W3Schools"), integer variables store number values (103), date variables store date values, etc. Variables are declared using the Dim keyword, or by using the type (if you want to declare the type), but ASP.NET can usually determine data types automatically.

Examples

// Using the Dim keyword: Dim greeting = "Welcome to W3Schools" Dim counter = 103 Dim today = DateTime.Today // Using data types: Dim greeting As String = "Welcome to W3Schools" Dim counter As Integer = 103 Dim today As DateTime = DateTime.Today

Data Types

Below is a list of common data types:
Type Description Examples
integerInteger (whole numbers)103, 12, 5168
double64 bit floating-point number3.14, 3.4e38
decimalDecimal number (higher precision)1037.196543
booleanBooleantrue, false
stringString"Hello W3Schools", "John"

Operators

An operator tells ASP.NET what kind of command to perform in an expression. The VB language supports many operators. Below is a list of common operators:
Operator Description Example
=Assigns a value to a variable.i=6
+ - * / Adds a value or variable. Subtracts a value or variable. Multiplies a value or variable. Divides a value or variable.i=5+5 i=5-5 i=5*5 i=5/5
+= -=Increments a variable. Decrements a variable.i += 1 i -= 1
=Equality. Returns true if values are equal.if i=10
<>Inequality. Returns true if values are not equal.if <>10
< > <= >=Less than. Greater than. Less than or equal. Greater than or equal.if i<10 if i>10 if i<=10 if i>=10
&Adding strings (concatenation)."w3" & "schools"
.Dot. Separate objects and methods.DateTime.Hour
()Parenthesis. Groups values.(i+5)
()Parenthesis. Passes parameters.x=Add(i,5)
()Parenthesis. Accesses values in arrays or collections.name(3)
NotNot. Reverses true or false.if Not ready
And ORLogical AND. Logical OR.if ready And clear if ready Or clear
AndAlso orElseExtended Logical AND. Extended Logical OR.if ready AndAlso clear if ready OrElse clear

Converting Data Types

Converting from one data type to another is sometimes useful. The most common example is to convert string input to another type, such as an integer or a date. As a rule, user input comes as strings, even if the user entered a number. Therefore, numeric input values must be converted to numbers before they can be used in calculations. Below is a list of common conversion methods:
Method Decryptions Example
AsInt() IsInt()Converts a string to an integer.if myString.IsInt() then myInt=myString.AsInt() end if
AsFloat() IsFloat()Converts a string to a floating-point number.if myString.IsFloat() then myFloat=myString.AsFloat() end if
AsDecimal() IsDecimal()Converts a string to a decimal number.if myString.IsDecimal() then myDec=myString.AsDecimal() end if
AsDateTime() IsDateTime()Converts a string to an ASP.NET DateTime type.myString="10/10/2012" myDate=myString.AsDateTime()
AsBool() IsBool()Converts a string to a Boolean.myString="True" myBool=myString.AsBool()
ToString()Converts any data type to a string.myInt=1234 myString=myInt.ToString()

ASP.NET Razor - VB Loops and Arrays

For Loops

If you need to run the same statements repeatedly, you can program a loop. If you know how many times you want to loop, you can use a for loop. This kind of loop is especially useful for counting up or counting down:

Example

<html> <body> @For i=10 To 21 @<p>Line #@i</p> Next i </body> </html> Run example

For Each Loops

If you work with a collection or an array, you often use a for each loop. A collection is a group of similar objects, and the for each loop lets you carry out a task on each item. The for each loop walks through a collection until it is finished. The example below walks through the ASP.NET Request.ServerVariables collection.

Example

<html> <body> <ul> @For Each x In Request.ServerVariables @<li>@x</li> Next x </ul> </body> </html> Run example

While Loops

The while loop is a general purpose loop. A while loop begins with the while keyword, followed by parentheses, where you specify how long the loop continues, then a block to repeat. While loops typically add to, or subtract from, a variable used for counting. In the example below, the += operator adds 1 to the variable i, each time the loop runs.

Example

<html> <body> @Code Dim i=0 Do While i<5 i += 1 @<p>Line #@i</p> Loop End Code </body> </html> Run example

Arrays

An array is useful when you want to store similar variables but don't want to create a separate variable for each of them:

Example

@Code Dim members As String()={"Jani","Hege","Kai","Jim"} i=Array.IndexOf(members,"Kai")+1 len=members.Length x=members(2-1) end Code <html> <body> <h3>Members</h3> @For Each person In members @<p>@person</p> Next person <p>The number of names in Members are @len</p> <p>The person at position 2 is @x</p> <p>Kai is now in position @i</p> </body> </html> Run example

ASP.NET Razor - VB Logic Conditions

The If Condition

VB lets you execute code based on conditions. To test a condition you use the if statement. The if statement returns true or false, based on your test: The if statement starts a code block The condition is written between if and then The code between if ... then and end if is executed if the test is true

Example

@Code Dim price=50 End Code <html> <body> @If price>30 Then @<p>The price is too high.</p> End If </body> </html> Run example

The Else Condition

An if statement can include an else condition. The else condition defines the code to be executed if the condition is false.

Example

@Code Dim price=20 End Code <html> <body> @if price>30 then @<p>The price is too high.</p> Else @<p>The price is OK.</p> End If </body> </html> Run example Note: In the example above, if the first condition is true, it will be executed. The else condition covers "everything else".

The ElseIf Condition

Multiple conditions can be tested with an else if condition:

Example

@Code Dim price=25 End Code <html> <body> @If price>=30 Then @<p>The price is high.</p> ElseIf price>20 And price<30 then @<p>The price is OK.</p> Else @<p>The price is low.</p> End If </body> </html> Run example In the example above, if the first condition is true, it will be executed. If not, then if the next condition is true, this condition will be executed. You can have any number of else if conditions. If none of the if or else if conditions are true, the last else block (without a condition) covers "everything else".

Select Conditions

A select block can be used to test a number of individual conditions:

Example

@Code Dim weekday=DateTime.Now.DayOfWeek Dim day=weekday.ToString() Dim message="" End Code <html> <body> @Select Case day Case "Monday" message="This is the first weekday." Case "Thursday" message="Only one day before weekend." Case "Friday" message="Tomorrow is weekend!" Case Else message="Today is " & day End Select <p>@message</p> </body> </html> Run example "Select Case" is followed by the test value (day). Each individual test condition has a case value, and any number of code lines. If the test value matches the case value, the code lines are executed. A select block can have a default case (Case Else) for "everything else" that runs if none of the other cases are true.

ASP Tutorial

ASP is an old (but still powerful) tool for making dynamic Web pages. ASP is a technology (much like PHP) for executing scripts on a web server. In this tutorial you will learn all you need to know about ASP.

Easy Learning with "Show Example"

This ASP tutorial contains hundreds of examples. Our "Show Example" tool makes it easy to learn ASP, because it shows ASP code with parallel HTML output.

Example

<!DOCTYPE html> <html> <body> <% response.write("My first ASP script!") %> </body> </html> Show Example Click on the "Show Example" button to see how it works!

What is ASP?

ASP stands for Active Server Pages ASP is a Microsoft Technology ASP is a program that runs inside a web server

What is an ASP File?

An ASP file has the file extension ".asp" An ASP file is just the same as an HTML file An ASP file can contain server scripts in addition to HTML Server scripts in an ASP file are executed on the server

What can ASP do for you?

Edit, change, add content, or customize any web page Respond to user queries or data submitted from HTML forms Access databases or other server data and return results to a browser Provide web security since ASP code cannot be viewed in a browser Offer simplicity and speed

How Does it Work?

When a browser requests a normal HTML file, the server just returns the file. When a browser requests an ASP file, the server passes the request to the ASP engine which reads the ASP file and executes the server scripts in the file. Finally the ASP file is returned to the browser as plain HTML.

ASP References

At W3Schools you will find complete ASP references about built-in objects and components, and their properties and methods. ASP References

ASP Examples

Learn by 100 examples! Because ASP scripts are executed on the server, you can not view ASP code in a browser, you will only see the output from ASP which is plain HTML. At W3Schools every example displays the hidden ASP code. This will make it easier for you to understand how it works. ASP Examples!

ASP Syntax

This makes it easier for you to understand how ASP works.

ASP Uses VBScript

The default scripting language in ASP is VBScript. A scripting language is a lightweight programming language. VBScript is a light version of Microsoft's Visual Basic.

ASP Files

ASP files can be ordinary HTML files. In addition, ASP files can also contain server scripts. Scripts surrounded by <% and %> are executed on the server. The Response.Write() method is used by ASP to write output to HTML. The following example writes "Hello World" into HTML:

Example

<!DOCTYPE html> <html> <body> <% Response.Write("Hello World!") %> </body> </html> Show Example VBScript is case insensitive. Response.Write() can be written as response.write().

Using JavaScript in ASP

To set JavaScript as the scripting language for a web page you must insert a language specification at the top of the page:

Example

<%@ language="javascript"%> <!DOCTYPE html> <html> <body> <% Response.Write("Hello World!") %> </body> </html> This tutorial uses the VBScript scripting language.

More Examples

There is an easy shortcut to Response.Write(). You can use an equal sign (=) instead. The following example also writes "Hello World" into HTML:

Example

<!DOCTYPE html> <html> <body> <% ="Hello World!" %> </body> </html> Show Example HTML tags can be a part of the output:

Example

<!DOCTYPE html> <html> <body> <% Response.Write("<h2>You can use HTML tags to format the text!</h2>") %> </body> </html> Show Example HTML attributes can be a part of the output:

Example

<!DOCTYPE html> <html> <body> <% Response.Write("<p style='color:#0000ff'>This text is styled.</p>") %> </body> </html> Show Example

VBScript Examples

This tutorial contains a lot of VBScript examples. VBScript Examples

VBScript Reference

This tutorial has complete VBScript reference. VBScript Reference

ASP Variables

More Examples

Declare a variable This example demonstrates how to declare a variable, assign a value to it, and use the value in a text. Create an array Arrays are used to store a series of related data items. This example demonstrates how to create an array that stores names. Loop through the HTML headings How to loop through the six headings in HTML. Time-based greeting using VBScript This example will display a different message to the user depending on the time on the server. Time-based greeting using JavaScript This example is the same as the one above, but the syntax is different. Create and change a variable How to create a variable, assign a value to it, and then change the value of it. Insert a variable value in a text How to insert a variable value in a text.

Do You Remember Algebra from School?

Do you remember algebra from school? x=5, y=6, z=x+y Do you remember that a letter (like x) could be used to hold a value (like 5), and that you could use the information above to calculate the value of z to be 11? These letters are called variables, and variables can be used to hold values (x=5) or expressions (z=x+y).

VBScript Variables

As with algebra, VBScript variables are used to hold values or expressions. A variable can have a short name, like x, or a more descriptive name, like carname. Rules for VBScript variable names: Must begin with a letter Cannot contain a period (.) Cannot exceed 255 characters In VBScript, all variables are of type variant, that can store different types of data.

Declaring (Creating) VBScript Variables

Creating variables in VBScript is most often referred to as "declaring" variables. You can declare VBScript variables with the Dim, Public or the Private statement. Like this: Dim x Dim carname Now you have created two variables. The name of the variables are "x" and "carname". You can also declare variables by using its name in a script. Like this: carname="Volvo" Now you have also created a variable. The name of the variable is "carname". However, this method is not a good practice, because you can misspell the variable name later in your script, and that can cause strange results when your script is running. If you misspell for example the "carname" variable to "carnime", the script will automatically create a new variable called "carnime". To prevent your script from doing this, you can use the Option Explicit statement. This statement forces you to declare all your variables with the dim, public or private statement. Put the Option Explicit statement on the top of your script. Like this: Option Explicit Dim carname carname=some value

Assigning Values to Variables

You assign a value to a variable like this: carname="Volvo" x=10 The variable name is on the left side of the expression and the value you want to assign to the variable is on the right. Now the variable "carname" has the value of "Volvo", and the variable "x" has the value of "10".

VBScript Array Variables

An array variable is used to store multiple values in a single variable. In the following example, an array containing 3 elements is declared: Dim names(2) The number shown in the parentheses is 2. We start at zero so this array contains 3 elements. This is a fixed-size array. You assign data to each of the elements of the array like this: names(0)="Tove" names(1)="Jani" names(2)="Stale" Similarly, the data can be retrieved from any element using the index of the particular array element you want. Like this: mother=names(0) You can have up to 60 dimensions in an array. Multiple dimensions are declared by separating the numbers in the parentheses with commas. Here we have a two-dimensional array consisting of 5 rows and 7 columns: Dim table(4,6) Assign data to a two-dimensional array:

Example

<html> <body> <% Dim x(2,2) x(0,0)="Volvo" x(0,1)="BMW" x(0,2)="Ford" x(1,0)="Apple" x(1,1)="Orange" x(1,2)="Banana" x(2,0)="Coke" x(2,1)="Pepsi" x(2,2)="Sprite" for i=0 to 2 response.write("<p>") for j=0 to 2 response.write(x(i,j) & "<br />") next response.write("</p>") next %> </body> </html> Show Example

The Lifetime of Variables

A variable declared outside a procedure can be accessed and changed by any script in the ASP file. A variable declared inside a procedure is created and destroyed every time the procedure is executed. No scripts outside the procedure can access or change the variable. To declare variables accessible to more than one ASP file, declare them as session variables or application variables.

Session Variables

Session variables are used to store information about ONE single user, and are available to all pages in one application. Typically information stored in session variables are name, id, and preferences.

Application Variables

Application variables are also available to all pages in one application. Application variables are used to store information about ALL users in one specific application.

ASP Procedures

Procedures

The ASP source code can contain procedures and functions:

Example

<!DOCTYPE html> <html> <head> <% sub vbproc(num1,num2) response.write(num1*num2) end sub %> </head> <body> <p>Result: <%call vbproc(3,4)%></p> </body> </html> Show Example Insert the <%@ language="language" %> line above the <html> tag to write the procedure/function in another scripting language:

Example

<%@ language="javascript" %> <!DOCTYPE html> <html> <head> <% function jsproc(num1,num2) { Response.Write(num1*num2) } %> </head> <body> <p>Result: <%jsproc(3,4)%></p> </body> </html> Show Example

Differences Between VBScript and JavaScript

When calling a VBScript or a JavaScript procedure from an ASP file written in VBScript, you can use the "call" keyword followed by the procedure name. If a procedure requires parameters, the parameter list must be enclosed in parentheses when using the "call" keyword. If you omit the "call" keyword, the parameter list must not be enclosed in parentheses. If the procedure has no parameters, the parentheses are optional. When calling a JavaScript or a VBScript procedure from an ASP file written in JavaScript, always use parentheses after the procedure name.

VBScript Procedures

VBScript has two kinds procedures: Sub procedure Function procedure

VBScript Sub Procedures

A Sub procedure: is a series of statements, enclosed by the Sub and End Sub statements can perform actions, but does not return a value can take arguments Sub mysub() some statements End Subor Sub mysub(argument1,argument2) some statements End Sub

Example

Sub mysub() response.write("I was written by a sub procedure") End Sub Show Example

VBScript Function Procedures

A Function procedure: is a series of statements, enclosed by the Function and End Function statements can perform actions and can return a value can take arguments that are passed to it by a calling procedure without arguments, must include an empty set of parentheses () returns a value by assigning a value to its name Function myfunction() some statements myfunction=some value End Functionor Function myfunction(argument1,argument2) some statements myfunction=some value End Function

Example

function myfunction() myfunction=Date() end function Show Example

Calling a Procedure

This simple function procedures is called to calculate the sum of two arguments:

Example

Function myfunction(a,b) myfunction=a+b End Function response.write(myfunction(5,9)) Show Example The function "myfunction" will return the sum of argument "a" and argument "b". In this case 14. When you call a procedure you can use the Call statement, like this: Call MyProc(argument) Or, you can omit the Call statement, like this: MyProc argument

More Examples

Call procedures using VBScript How to call both a JavaScript procedure and a VBScript procedure in an ASP file.

VBScript Conditional Statements

Conditional statements are used to perform different actions for different decisions. In VBScript we have four conditional statements: If statement - executes a set of code when a condition is true If...Then...Else statement - select one of two sets of lines to execute If...Then...ElseIf statement - select one of many sets of lines to execute Select Case statement - select one of many sets of lines to execute

If...Then...Else

Use the If...Then...Else statement if you want to execute some code if a condition is true select one of two blocks of code to execute If you want to execute only one statement when a condition is true, you can write the code on one line: If i=10 Then response.write("Hello") There is no ..Else.. in this syntax. You just tell the code to perform one action if a condition is true (in this case If i=10). If you want to execute more than one statement when a condition is true, you must put each statement on separate lines, and end the statement with the keyword "End If": If i=10 Then response.write("Hello") i = i+1 End If There is no ..Else.. in the example above either. You just tell the code to perform multiple actions if the condition is true. If you want to execute a statement if a condition is true and execute another statement if the condition is not true, you must add the "Else" keyword:

Example

i=hour(time) If i < 10 Then response.write("Good morning!") Else response.write("Have a nice day!") End If Show Example In the example above, the first block of code will be executed if the condition is true, and the other block will be executed otherwise (if i is greater than 10).

If...Then...ElseIf

You can use the If...Then...ElseIf statement if you want to select one of many blocks of code to execute:

Example

i=hour(time) If i = 10 Then response.write("Just started...!") ElseIf i = 11 Then response.write("Hungry!") ElseIf i = 12 Then response.write("Ah, lunch-time!") ElseIf i = 16 Then response.write("Time to go home!") Else response.write("Unknown") End If Show Example

Select Case

You can also use the "Select Case" statement if you want to select one of many blocks of code to execute:

Example

d=weekday(date) Select Case d Case 1 response.write("Sleepy Sunday") Case 2 response.write("Monday again!") Case 3 response.write("Just Tuesday!") Case 4 response.write("Wednesday!") Case 5 response.write("Thursday...") Case 6 response.write("Finally Friday!") Case else response.write("Super Saturday!!!!") End Select Show Example This is how it works: First we have a single expression (most often a variable), that is evaluated once. The value of the expression is then compared with the values for each Case in the structure. If there is a match, the block of code associated with that Case is executed.

VBScript Looping

Looping statements are used to run the same block of code a specified number of times. In VBScript we have four looping statements: For...Next statement - runs code a specified number of times For Each...Next statement - runs code for each item in a collection or each element of an array Do...Loop statement - loops while or until a condition is true While...Wend statement - Do not use it - use the Do...Loop statement instead

For...Next Loop

Use the For...Next statement to run a block of code a specified number of times. The For statement specifies the counter variable (i), and its start and end values. The Next statement increases the counter variable (i) by one.

Example

<html> <body> <% For i = 0 To 5 response.write("The number is " & i & "<br />") Next %> </body> </html> Show Example

The Step Keyword

With the Step keyword, you can increase or decrease the counter variable by the value you specify. In the example below, the counter variable (i) is INCREASED by two, each time the loop repeats. For i=2 To 10 Step 2 some code Next To decrease the counter variable, you must use a negative Step value. You must specify an end value that is less than the start value. In the example below, the counter variable (i) is DECREASED by two, each time the loop repeats. For i=10 To 2 Step -2 some code Next

Exit a For...Next

You can exit a For...Next statement with the Exit For keyword. For i=1 To 10 If i=5 Then Exit For some code Next

For Each...Next Loop

A For Each...Next loop repeats a block of code for each item in a collection, or for each element of an array.

Example

<html> <body> <% Dim cars(2) cars(0)="Volvo" cars(1)="Saab" cars(2)="BMW" For Each x In cars response.write(x & "<br />") Next %> </body> </html> Show Example

Do...Loop

If you don't know how many repetitions you want, use a Do...Loop statement. The Do...Loop statement repeats a block of code while a condition is true, or until a condition becomes true.

Repeat Code While a Condition is True

You use the While keyword to check a condition in a Do...Loop statement. Do While i>10 some code Loop If i equals 9, the code inside the loop above will never be executed. Do some code Loop While i>10 The code inside this loop will be executed at least one time, even if i is less than 10.

Repeat Code Until a Condition Becomes True

You use the Until keyword to check a condition in a Do...Loop statement. Do Until i=10 some code Loop If i equals 10, the code inside the loop will never be executed. Do some code Loop Until i=10 The code inside this loop will be executed at least one time, even if i is equal to 10.

Exit a Do...Loop

You can exit a Do...Loop statement with the Exit Do keyword. Do Until i=10 i=i-1 If i<10 Then Exit Do Loop The code inside this loop will be executed as long as i is different from 10, and as long as i is greater than 10.

More Examples

Looping through headers How to loop through the six headings in html. Do...While loop How to make a simple Do...While loop.

ASP Forms and User Input

More Examples

A form with method="get" How to interact with the user, with the Request.QueryString command. A form with method="post" How to interact with the user, with the Request.Form command. A form with radio buttons How to interact with the user, through radio buttons, with the Request.Form command.

User Input

The Request object can be used to retrieve user information from forms. User input can be retrieved with the Request.QueryString or Request.Form command.

Request.QueryString

The Request.QueryString command is used to collect values in a form with method="get". Information sent from a form with the GET method is visible to everyone (it will be displayed in the browser's address bar) and has limits on the amount of information to send.

Example HTML form

<form method="get" action="simpleform.asp"> First Name: <input type="text" name="fname"><br> Last Name: <input type="text" name="lname"><br><br> <input type="submit" value="Submit"> </form> If a user typed "Bill" and "Gates" in the HTML form above, the URL sent to the server would look like this: https://www.w3schools.com/simpleform.asp?fname=Bill&lname=Gates Assume that "simpleform.asp" contains the following ASP script: <body> Welcome <% response.write(request.querystring("fname")) response.write(" " & request.querystring("lname")) %> </body> The browser will display the following in the body of the document: Welcome Bill Gates

Request.Form

The Request.Form command is used to collect values in a form with method="post". Information sent from a form with the POST method is invisible to others and has no limits on the amount of information to send.

Example HTML form

<form method="post" action="simpleform.asp"> First Name: <input type="text" name="fname"><br> Last Name: <input type="text" name="lname"><br><br> <input type="submit" value="Submit"> </form> If a user typed "Bill" and "Gates" in the HTML form above, the URL sent to the server would look like this: https://www.w3schools.com/simpleform.asp Assume that "simpleform.asp" contains the following ASP script: <body> Welcome <% response.write(request.form("fname")) response.write(" " & request.form("lname")) %> </body> The browser will display the following in the body of the document: Welcome Bill Gates

Form Validation

User input should be validated on the browser whenever possible (by client scripts). Browser validation is faster and reduces the server load. You should consider server validation if the user input will be inserted into a database. A good way to validate a form on the server is to post the form to itself, instead of jumping to a different page. The user will then get the error messages on the same page as the form. This makes it easier to discover the error.

ASP Cookies

More Examples

Welcome cookie How to create a Welcome cookie.

What is a Cookie?

A cookie is often used to identify a user. A cookie is a small file that the server embeds on the user's computer. Each time the same computer requests a page with a browser, it will send the cookie too. With ASP, you can both create and retrieve cookie values.

How to Create a Cookie?

The "Response.Cookies" command is used to create cookies. Note: The Response.Cookies command must appear BEFORE the <html> tag. In the example below, we will create a cookie named "firstname" and assign the value "Alex" to it: <% Response.Cookies("firstname")="Alex" %> It is also possible to assign properties to a cookie, like setting a date when the cookie should expire: <% Response.Cookies("firstname")="Alex" Response.Cookies("firstname").Expires=#May 10,2012# %>

How to Retrieve a Cookie Value?

The "Request.Cookies" command is used to retrieve a cookie value. In the example below, we retrieve the value of the cookie named "firstname" and display it on a page: <% fname=Request.Cookies("firstname") response.write("Firstname=" & fname) %> Output: Firstname=Alex

A Cookie with Keys

If a cookie contains a collection of multiple values, we say that the cookie has Keys. In the example below, we will create a cookie collection named "user". The "user" cookie has Keys that contains information about a user: <% Response.Cookies("user")("firstname")="John" Response.Cookies("user")("lastname")="Smith" Response.Cookies("user")("country")="Norway" Response.Cookies("user")("age")="25" %>

Read all Cookies

Look at the following code: <% Response.Cookies("firstname")="Alex" Response.Cookies("user")("firstname")="John" Response.Cookies("user")("lastname")="Smith" Response.Cookies("user")("country")="Norway" Response.Cookies("user")("age")="25" %> Assume that your server has sent all the cookies above to a user. Now we want to read all the cookies sent to a user. The example below shows how to do it (note that the code below checks if a cookie has Keys with the HasKeys property): <!DOCTYPE html> <html> <body> <% dim x,y for each x in Request.Cookies response.write("<p>") if Request.Cookies(x).HasKeys then for each y in Request.Cookies(x) response.write(x & ":" & y & "=" & Request.Cookies(x)(y)) response.write("<br>") next else Response.Write(x & "=" & Request.Cookies(x) & "<br>") end if response.write "</p>" next %> </body> </html> Output: firstname=Alex user:firstname=John user:lastname=Smith user:country=Norway user:age=25

What if a Browser Does NOT Support Cookies?

If your application deals with browsers that do not support cookies, you will have to use other methods to pass information from one page to another in your application. There are two ways of doing this:

1. Add parameters to a URL

You can add parameters to a URL: <a href="welcome.asp?fname=John&lname=Smith">Go to Welcome Page</a> And retrieve the values in the "welcome.asp" file like this: <% fname=Request.querystring("fname") lname=Request.querystring("lname") response.write("<p>Hello " & fname & " " & lname & "!</p>") response.write("<p>Welcome to my Web site!</p>") %>

2. Use a form

You can use a form. The form passes the user input to "welcome.asp" when the user clicks on the Submit button: <form method="post" action="welcome.asp"> First Name: <input type="text" name="fname" value=""> Last Name: <input type="text" name="lname" value=""> <input type="submit" value="Submit"> </form> Retrieve the values in the "welcome.asp" file like this: <% fname=Request.form("fname") lname=Request.form("lname") response.write("<p>Hello " & fname & " " & lname & "!</p>") response.write("<p>Welcome to my Web site!</p>") %>

ASP Session Object

The Session object

When you are working with an application on your computer, you open it, do some changes and then you close it. This is much like a Session. The computer knows who you are. It knows when you open the application and when you close it. However, on the internet there is one problem: the web server does not know who you are and what you do, because the HTTP address doesn't maintain state. ASP solves this problem by creating a unique cookie for each user. The cookie is sent to the user's computer and it contains information that identifies the user. This interface is called the Session object. The Session object stores information about, or change settings for a user session. Variables stored in a Session object hold information about one single user, and are available to all pages in one application. Common information stored in session variables are name, id, and preferences. The server creates a new Session object for each new user, and destroys the Session object when the session expires.

When does a Session Start?

A session starts when: A new user requests an ASP file, and the Global.asa file includes a Session_OnStart procedure A value is stored in a Session variable A user requests an ASP file, and the Global.asa file uses the <object> tag to instantiate an object with session scope

When does a Session End?

A session ends if a user has not requested or refreshed a page in the application for a specified period. By default, this is 20 minutes. If you want to set a timeout interval that is shorter or longer than the default, use the Timeout property. The example below sets a timeout interval of 5 minutes: <% Session.Timeout=5 %> Use the Abandon method to end a session immediately: <% Session.Abandon %> Note: The main problem with sessions is WHEN they should end. We do not know if the user's last request was the final one or not. So we do not know how long we should keep the session "alive". Waiting too long for an idle session uses up resources on the server, but if the session is deleted too soon the user has to start all over again because the server has deleted all the information. Finding the right timeout interval can be difficult! Tip: Only store SMALL amounts of data in session variables!

Store and Retrieve Session Variables

The most important thing about the Session object is that you can store variables in it. The example below will set the Session variable username to "Donald Duck" and the Session variable age to "50": <% Session("username")="Donald Duck" Session("age")=50 %> When the value is stored in a session variable it can be reached from ANY page in the ASP application: Welcome <%Response.Write(Session("username"))%> The line above returns: "Welcome Donald Duck". You can also store user preferences in the Session object, and then access that preference to choose what page to return to the user. The example below specifies a text-only version of the page if the user has a low screen resolution: <%If Session("screenres")="low" Then%> This is the text version of the page <%Else%> This is the multimedia version of the page <%End If%>

Remove Session Variables

The Contents collection contains all session variables. It is possible to remove a session variable with the Remove method. The example below removes the session variable "sale" if the value of the session variable "age" is lower than 18: <% If Session.Contents("age")<18 then Session.Contents.Remove("sale") End If %> To remove all variables in a session, use the RemoveAll method: <% Session.Contents.RemoveAll() %>

Loop Through the Contents Collection

The Contents collection contains all session variables. You can loop through the Contents collection, to see what's stored in it: <% Session("username")="Donald Duck" Session("age")=50 dim i For Each i in Session.Contents Response.Write(i & "<br>") Next %> Result: username age If you do not know the number of items in the Contents collection, you can use the Count property: <% dim i dim j j=Session.Contents.Count Response.Write("Session variables: " & j) For i=1 to j Response.Write(Session.Contents(i) & "<br>") Next %> Result: Session variables: 2 Donald Duck 50

Loop Through the StaticObjects Collection

You can loop through the StaticObjects collection, to see the values of all objects stored in the Session object: <% dim i For Each i in Session.StaticObjects Response.Write(i & "<br>") Next %>

ASP Application Object

Application Object

An application on the Web may consist of several ASP files that work together to perform some purpose. The Application object is used to tie these files together. The Application object is used to store and access variables from any page, just like the Session object. The difference is that ALL users share ONE Application object (with Sessions there is ONE Session object for EACH user). The Application object holds information that will be used by many pages in the application (like database connection information). The information can be accessed from any page. The information can also be changed in one place, and the changes will automatically be reflected on all pages.

Store and Retrieve Application Variables

Application variables can be accessed and changed by any page in an application. You can create Application variables in "Global.asa" like this: <script language="vbscript" runat="server"> Sub Application_OnStart application("vartime")="" application("users")=1 End Sub </script> In the example above we have created two Application variables: "vartime" and "users". You can access the value of an Application variable like this: There are <% Response.Write(Application("users")) %> active connections.

Loop Through the Contents Collection

The Contents collection contains all application variables. You can loop through the Contents collection, to see what's stored in it: <% dim i For Each i in Application.Contents Response.Write(i & "<br>") Next %> If you do not know the number of items in the Contents collection, you can use the Count property: <% dim i dim j j=Application.Contents.Count For i=1 to j Response.Write(Application.Contents(i) & "<br>") Next %>

Loop Through the StaticObjects Collection

You can loop through the StaticObjects collection, to see the values of all objects stored in the Application object: <% dim i For Each i in Application.StaticObjects Response.Write(i & "<br>") Next %>

Lock and Unlock

You can lock an application with the "Lock" method. When an application is locked, the users cannot change the Application variables (other than the one currently accessing it). You can unlock an application with the "Unlock" method. This method removes the lock from the Application variable: <% Application.Lock 'do some application object operations Application.Unlock %>

ASP Including Files

You can insert the content of one ASP file into another ASP file before the server executes it, with the #include directive. The #include directive is used to create functions, headers, footers, or elements that will be reused on multiple pages.

How to Use the #include Directive

Here is a file called "mypage.asp": <!DOCTYPE html> <html> <body> <h3>Words of Wisdom:</h3> <p><!--#include file="wisdom.inc"--></p> <h3>The time is:</h3> <p><!--#include file="time.inc"--></p> </body> </html> Here is the "wisdom.inc" file: "One should never increase, beyond what is necessary, the number of entities required to explain anything." Here is the "time.inc" file: <% Response.Write(Time) %> If you look at the source code in a browser, it will look something like this: <!DOCTYPE html> <html> <body> <h3>Words of Wisdom:</h3> <p>"One should never increase, beyond what is necessary, the number of entities required to explain anything."</p> <h3>The time is:</h3> <p>11:33:42 AM</p> </body> </html>

Syntax for Including Files

To include a file in an ASP page, place the #include directive inside comment tags: <!--#include virtual="somefilename"--> or <!--#include file ="somefilename"-->

The Virtual Keyword

Use the virtual keyword to indicate a path beginning with a virtual directory. If a file named "header.inc" resides in a virtual directory named /html, the following line would insert the contents of "header.inc": <!-- #include virtual ="/html/header.inc" -->

The File Keyword

Use the file keyword to indicate a relative path. A relative path begins with the directory that contains the including file. If you have a file in the html directory, and the file "header.inc" resides in html\headers, the following line would insert "header.inc" in your file: <!-- #include file ="headers\header.inc" --> Note that the path to the included file (headers\header.inc) is relative to the including file. If the file containing this #include statement is not in the html directory, the statement will not work.

Tips and Notes

In the sections above we have used the file extension ".inc" for included files. Notice that if a user tries to browse an INC file directly, its content will be displayed. If your included file contains confidential information or information you do not want any users to see, it is better to use an ASP extension. The source code in an ASP file will not be visible after the interpretation. An included file can also include other files, and one ASP file can include the same file more than once. Important: Included files are processed and inserted before the scripts are executed. The following script will NOT work because ASP executes the #include directive before it assigns a value to the variable: <% fname="header.inc" %> <!--#include file="<%fname%>"--> You cannot open or close a script delimiter in an INC file. The following script will NOT work: <% For i = 1 To n <!--#include file="count.inc"--> Next %> But this script will work: <% For i = 1 to n %> <!--#include file="count.inc" --> <% Next %>

ASP The Global.asa file

The Global.asa file is an optional file that can contain declarations of objects, variables, and methods that can be accessed by every page in an ASP application. All valid browser scripts (JavaScript, VBScript, JScript, PerlScript, etc.) can be used within Global.asa. The Global.asa file can contain only the following: Application events Session events <object> declarations TypeLibrary declarations the #include directive Note: The Global.asa file must be stored in the root directory of the ASP application, and each application can only have one Global.asa file.

Events in Global.asa

In Global.asa you can tell the application and session objects what to do when the application/session starts and what to do when the application/session ends. The code for this is placed in event handlers. The Global.asa file can contain four types of events: Application_OnStart - Occurs when the FIRST user calls the first page in an ASP application. This event occurs after the Web server is restarted or after the Global.asa file is edited. The "Session_OnStart" event occurs immediately after this event. Session_OnStart - This event occurs EVERY time a NEW user requests his or her first page in the ASP application. Session_OnEnd - This event occurs EVERY time a user ends a session. A user-session ends after a page has not been requested by the user for a specified time (by default this is 20 minutes). Application_OnEnd - This event occurs after the LAST user has ended the session. Typically, this event occurs when a Web server stops. This procedure is used to clean up settings after the Application stops, like delete records or write information to text files. A Global.asa file could look something like this: <script language="vbscript" runat="server"> sub Application_OnStart 'some code end sub sub Application_OnEnd 'some code end sub sub Session_OnStart 'some code end sub sub Session_OnEnd 'some code end sub </script> Note: Because we cannot use the ASP script delimiters (<% and %>) to insert scripts in the Global.asa file, we put subroutines inside an HTML <script> element.

<object> Declarations

It is possible to create objects with session or application scope in Global.asa by using the <object> tag. Note: The <object> tag should be outside the <script> tag!

Syntax

<object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}> .... </object>
ParameterDescription
scope Sets the scope of the object (either Session or Application)
id Specifies a unique id for the object
ProgID An id associated with a class id. The format for ProgID is [Vendor.]Component[.Version] Either ProgID or ClassID must be specified.
ClassID Specifies a unique id for a COM class object. Either ProgID or ClassID must be specified.

Examples

The first example creates an object of session scope named "MyAd" by using the ProgID parameter: <object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator"> </object> The second example creates an object of application scope named "MyConnection" by using the ClassID parameter: <object runat="server" scope="application" id="MyConnection" classid="Clsid:8AD3067A-B3FC-11CF-A560-00A0C9081C21"> </object> The objects declared in the Global.asa file can be used by any script in the application: GLOBAL.ASA: <object runat="server" scope="session" id="MyAd" progid="MSWC.AdRotator"> </object> You could reference the object "MyAd" from any page in the ASP application: SOME .ASP FILE: <%=MyAd.GetAdvertisement("/banners/adrot.txt")%>

TypeLibrary Declarations

A TypeLibrary is a container for the contents of a DLL file corresponding to a COM object. By including a call to the TypeLibrary in the Global.asa file, the constants of the COM object can be accessed, and errors can be better reported by the ASP code. If your Web application relies on COM objects that have declared data types in type libraries, you can declare the type libraries in Global.asa.

Syntax

<!--METADATA TYPE="TypeLib" file="filename" uuid="id" version="number" lcid="localeid" -->
ParameterDescription
fileSpecifies an absolute path to a type library. Either the file parameter or the uuid parameter is required
uuidSpecifies a unique identifier for the type library. Either the file parameter or the uuid parameter is required
versionOptional. Used for selecting version. If the requested version is not found, then the most recent version is used
lcidOptional. The locale identifier to be used for the type library

Error Values

The server can return one of the following error messages:
Error CodeDescription
ASP 0222 Invalid type library specification
ASP 0223 Type library not found
ASP 0224 Type library cannot be loaded
ASP 0225 Type library cannot be wrapped
Note: METADATA tags can appear anywhere in the Global.asa file (both inside and outside <script> tags). However, it is recommended that METADATA tags appear near the top of the Global.asa file.

Restrictions

Restrictions on what you can include in the Global.asa file: You cannot display text written in the Global.asa file. This file can't display information You can only use Server and Application objects in the Application_OnStart and Application_OnEnd subroutines. In the Session_OnEnd subroutine, you can use Server, Application, and Session objects. In the Session_OnStart subroutine you can use any built-in object

How to use the Subroutines

Global.asa is often used to initialize variables. The example below shows how to detect the exact time a visitor first arrives on a Web site. The time is stored in a Session variable named "started", and the value of the "started" variable can be accessed from any ASP page in the application: <script language="vbscript" runat="server"> sub Session_OnStart Session("started")=now() end sub </script> Global.asa can also be used to control page access. The example below shows how to redirect every new visitor to another page, in this case to a page called "newpage.asp": <script language="vbscript" runat="server"> sub Session_OnStart Response.Redirect("newpage.asp") end sub </script> And you can include functions in the Global.asa file. In the example below the Application_OnStart subroutine occurs when the Web server starts. Then the Application_OnStart subroutine calls another subroutine named "getcustomers". The "getcustomers" subroutine opens a database and retrieves a record set from the "customers" table. The record set is assigned to an array, where it can be accessed from any ASP page without querying the database: <script language="vbscript" runat="server"> sub Application_OnStart getcustomers end sub sub getcustomers set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=conn.execute("select name from customers") Application("customers")=rs.GetRows rs.Close conn.Close end sub </script>

Global.asa Example

In this example we will create a Global.asa file that counts the number of current visitors. The Application_OnStart sets the Application variable "visitors" to 0 when the server starts The Session_OnStart subroutine adds one to the variable "visitors" every time a new visitor arrives The Session_OnEnd subroutine subtracts one from "visitors" each time this subroutine is triggered The Global.asa file: <script language="vbscript" runat="server"> Sub Application_OnStart Application("visitors")=0 End Sub Sub Session_OnStart Application.Lock Application("visitors")=Application("visitors")+1 Application.UnLock End Sub Sub Session_OnEnd Application.Lock Application("visitors")=Application("visitors")-1 Application.UnLock End Sub </script> To display the number of current visitors in an ASP file: <!DOCTYPE html> <html> <head> </head> <body> <p>There are <%response.write(Application("visitors"))%> online now!</p> </body> </html>

ASP AJAX

What is AJAX?

AJAX = Asynchronous JavaScript and XML. AJAX is a technique for creating fast and dynamic web pages. AJAX allows web pages to be updated asynchronously by exchanging small amounts of data with the server behind the scenes. This means that it is possible to update parts of a web page, without reloading the whole page. Classic web pages, (which do not use AJAX) must reload the entire page if the content should change. Examples of applications using AJAX: Google Maps, Gmail, Youtube, and Facebook tabs.

How AJAX Works

AJAX

AJAX is Based on Internet Standards

AJAX is based on internet standards, and uses a combination of: XMLHttpRequest object (to exchange data asynchronously with a server) JavaScript/DOM (to display/interact with the information) CSS (to style the data) XML (often used as the format for transferring data) AJAX applications are browser- and platform-independent!

Google Suggest

AJAX was made popular in 2005 by Google, with Google Suggest. Google Suggest is using AJAX to create a very dynamic web interface: When you start typing in Google's search box, a JavaScript sends the letters off to a server and the server returns a list of suggestions.

Start Using AJAX Today

In our ASP tutorial, we will demonstrate how AJAX can update parts of a web page, without reloading the whole page. The server script will be written in ASP. If you want to learn more about AJAX, visit our AJAX tutorial.

AJAX ASP Example

The following example will demonstrate how a web page can communicate with a web server while a user type characters in an input field:

Example

Start typing a name in the input field below:
First name:
Suggestions:

Example Explained

In the example above, when a user types a character in the input field, a function called "showHint()" is executed. The function is triggered by the onkeyup event. Here is the HTML code:

Example

<html> <head> <script> function showHint(str) { if (str.length == 0) { document.getElementById("txtHint").innerHTML = ""; return; } else { var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { document.getElementById("txtHint").innerHTML = this.responseText; } }; xmlhttp.open("GET", "gethint.asp?q=" + str, true); xmlhttp.send(); } } </script> </head> <body> <p><b>Start typing a name in the input field below:</b></p> <form> First name: <input type="text" onkeyup="showHint(this.value)"> </form> <p>Suggestions: <span id="txtHint"></span></p> </body> </html> Try it Yourself Code explanation: First, check if the input field is empty (str.length == 0). If it is, clear the content of the txtHint placeholder and exit the function. However, if the input field is not empty, do the following: Create an XMLHttpRequest object Create the function to be executed when the server response is ready Send the request off to an ASP file (gethint.asp) on the server Notice that q parameter is added gethint.asp?q="+str The str variable holds the content of the input field

The ASP File - "gethint.asp"

The ASP file checks an array of names, and returns the corresponding name(s) to the browser: <% response.expires=-1 dim a(30) 'Fill up array with names a(1)="Anna" a(2)="Brittany" a(3)="Cinderella" a(4)="Diana" a(5)="Eva" a(6)="Fiona" a(7)="Gunda" a(8)="Hege" a(9)="Inga" a(10)="Johanna" a(11)="Kitty" a(12)="Linda" a(13)="Nina" a(14)="Ophelia" a(15)="Petunia" a(16)="Amanda" a(17)="Raquel" a(18)="Cindy" a(19)="Doris" a(20)="Eve" a(21)="Evita" a(22)="Sunniva" a(23)="Tove" a(24)="Unni" a(25)="Violet" a(26)="Liza" a(27)="Elizabeth" a(28)="Ellen" a(29)="Wenche" a(30)="Vicky" 'get the q parameter from URL q=ucase(request.querystring("q")) 'lookup all hints from array if length of q>0 if len(q)>0 then hint="" for i=1 to 30 if q=ucase(mid(a(i),1,len(q))) then if hint="" then hint=a(i) else hint=hint & " , " & a(i) end if end if next end if 'Output "no suggestion" if no hint were found 'or output the correct values if hint="" then response.write("no suggestion") else response.write(hint) end if %> AJAX can be used for interactive communication with a database.

AJAX Database Example

The following example will demonstrate how a web page can fetch information from a database with AJAX:

Example

Customer info will be listed here... Try it Yourself

Example Explained - The HTML Page

When a user selects a customer in the dropdown list above, a function called "showCustomer()" is executed. The function is triggered by the "onchange" event: <!DOCTYPE html> <html> <head> <script> function showCustomer(str) { if (str=="") { document.getElementById("txtHint").innerHTML=""; return; } if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (this.readyState==4 && this.status==200) { document.getElementById("txtHint").innerHTML=this.responseText; } } xmlhttp.open("GET","getcustomer.asp?q="+str,true); xmlhttp.send(); } </script> </head <body> <form> <select name="customers" onchange="showCustomer(this.value)"> <option value="">Select a customer:</option> <option value="ALFKI">Alfreds Futterkiste</option> <option value="NORTS ">North/South</option> <option value="WOLZA">Wolski Zajazd</option> </select> </form> < <div id="txtHint">Customer info will be listed here...</div> </body> </html> Source code explanation: If no customer is selected (str.length==0), the function clears the content of the txtHint placeholder and exits the function. If a customer is selected, the showCustomer() function executes the following: Create an XMLHttpRequest object Create the function to be executed when the server response is ready Send the request off to a file on the server Notice that a parameter (q) is added to the URL (with the content of the dropdown list)

The ASP File

The page on the server called by the JavaScript above is an ASP file called "getcustomer.asp". The source code in "getcustomer.asp" runs a query against a database, and returns the result in an HTML table: <% response.expires=-1 sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID=" sql=sql & "'" & request.querystring("q") & "'" set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open(Server.Mappath("/datafolder/northwind.mdb")) set rs=Server.CreateObject("ADODB.recordset") rs.Open sql,conn response.write("<table>") do until rs.EOF for each x in rs.Fields response.write("<tr><td><b>" & x.name & "</b></td>") response.write("<td>" & x.value & "</td></tr>") next rs.MoveNext loop response.write("</table>") %>

ASP Sending e-mail with CDOSYS

Sending e-mail with CDOSYS

CDO (Collaboration Data Objects) is a Microsoft technology that is designed to simplify the creation of messaging applications. CDOSYS is a built-in component in ASP. We will show you how to use this component to send e-mail with ASP.

How about CDONTs?

Microsoft has discontinued the use of CDONTs on Windows 2000, Windows XP and Windows 2003. If you have used CDONTs in your ASP applications, you should update the code and use the new CDO technology.

Examples using CDOSYS

Sending a text e-mail: <% Set myMail = CreateObject("CDO.Message") myMail.Subject = "Sending email with CDO" myMail.From = "mymail@mydomain.com" myMail.To = "someone@somedomain.com" myMail.TextBody = "This is a message." myMail.Send set myMail = nothing %> Sending a text e-mail with Bcc and CC fields: <% Set myMail = CreateObject("CDO.Message") myMail.Subject = "Sending email with CDO" myMail.From = "mymail@mydomain.com" myMail.To = "someone@somedomain.com" myMail.Bcc = "someoneelse@somedomain.com" myMail.Cc = "someoneelse2@somedomain.com" myMail.TextBody = "This is a message." myMail.Send set myMail = nothing %> Sending an HTML e-mail: <% Set myMail = CreateObject("CDO.Message") myMail.Subject = "Sending email with CDO" myMail.From = "mymail@mydomain.com" myMail.To = "someone@somedomain.com" myMail.HTMLBody = "<h1>This is a message.</h1>" myMail.Send set myMail = nothing %> Sending an HTML e-mail that sends a webpage from a website: <% Set myMail = CreateObject("CDO.Message") myMail.Subject = "Sending email with CDO" myMail.From = "mymail@mydomain.com" myMail.To ="someone@somedomain.com" myMail.CreateMHTMLBody "https://www.w3schools.com/asp/" myMail.Send set myMail = nothing %> Sending an HTML e-mail that sends a webpage from a file on your computer: <% Set myMail = CreateObject("CDO.Message") myMail.Subject = "Sending email with CDO" myMail.From = "mymail@mydomain.com" myMail.To = "someone@somedomain.com" myMail.CreateMHTMLBody "file://c:/mydocuments/test.htm" myMail.Send set myMail = nothing %> Sending a text e-mail with an Attachment: <% Set myMail = CreateObject("CDO.Message") myMail.Subject = "Sending email with CDO" myMail.From = "mymail@mydomain.com" myMail.To = "someone@somedomain.com" myMail.TextBody = "This is a message." myMail.AddAttachment "c:\mydocuments\test.txt" myMail.Send set myMail = nothing %> Sending a text e-mail using a remote server: <% Set myMail = CreateObject("CDO.Message") myMail.Subject = "Sending email with CDO" myMail.From = "mymail@mydomain.com" myMail.To = "someone@somedomain.com" myMail.TextBody = "This is a message." myMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'Name or IP of remote SMTP server myMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server.com" 'Server port myMail.Configuration.Fields.Item _ ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 myMail.Configuration.Fields.Update myMail.Send set myMail = nothing %>

ASP and VBScript Examples

ASP Output Writing plain text Writing HTML Tags Writing HTML attributes VbScript Variables Create a variable Create a variable and change its value Insert a variable value in a text Create an array VBScript Looping For..Next loop Looping through HTML headers For..Each loop Do...While loop VBScript Date and Time Functions Date and time Get the name of a day Get the name of a month Get todays' day and month Countdown to year 3000 Calculate the day which is n days from today Format date and time Is this a date? Some Other Built-in VBScript Functions Uppercase or lowercase a string Trim a string How to reverse a string? How to round a number? A random number Return a random number between 0-99 Return a specified number of characters from left/right of a string Replace some characters in a string Return a specified number of characters from a string Procedures Sub procedure Function procedure VBScript vs JavaScript Call a procedure using VBScript in ASP Call a procedure using JavaScript in ASP Call a JavaScript procedure and a VBScript procedure using VBScript in ASP Time-based greeting using VBScript Time-based greeting using JavaScript VBScript Conditional Statements If...Then..Else statement If...Then..ElseIf statement Select Case statement Random link ASP Forms Interact with a user in a form that uses the "get" method Interact with a user in a form that uses the "post" method Interact with a user in a form with radio buttons ASP Cookies Create a welcome cookie ASP Response Object Write text using ASP Format text with HTML tags Redirect the user to another URL Random links Controlling the buffer Clear the buffer End a script in the middle of processing Set how many minutes a page will be cached in a browser before it expires Set a date/time when a page cached in a browser will expire Check if the user is still connected Set the type of content Set the name of character set ASP Request Object Send extra information within a link A QueryString collection in its simplest use How to use information from forms More information from a form A form collection in its simplest use How to use information from forms More information from a form A form with radio buttons A form with checkboxes How to find the visitors' browser type, IP address and more List all servervariables you can ask for Welcome cookie Total number of bytes the user sent ASP Session Object Return session id number for a user Get a session's timeout ASP Server Object When was a file last modified? Open a textfile for reading Home made hit counter ASP FileSystem Object Does a specified file exist? Does a specified folder exist? Does a specified drive exist? Get the name of a specified drive Get the name of the parent folder of a specified path Get the file extension Get the base name of a file or folder ASP TextStream Object Read textfile Read only a part of a textfile Read one line of a textfile Read all lines from a textfile Skip a part of a textfile Skip a line of a textfile Return current line-number in a text file Get column number of the current character in a text file ASP Drive Object Get the available space of a specified drive Get the free space of a specified drive Get the total size of a specified drive Get the drive letter of a specified drive Get the drive type of a specified drive Get the file system of a specified drive Is the drive ready? Get the path of a specified drive Get the root folder of a specified drive Get the serial number of a specified drive ASP File Object When was the file created? When was the file last modified? When was the file last accessed? Return the attributes of a specified file ASP Dictionary Object Does a specified key exist? Return an array of all items Return an array of all keys Return the value of an item Set a key Return the number of key/item pairs ASP AdRotator Display a different image each time a user visits a page ASP Browser Capabilities Find the type, capabilities, and version of each browser that visits your site ASP ContentRotator Display a different content each time a user visits a page (ASP 3.0) ASP Content Linking Build a table of contents Navigate between pages in a text file ADO Display Display records Display records in an HTML table Add headers to the HTML table Add colors to the HTML table ADO Queries Display records where "Companyname" starts with an A Display records where "Companyname" is > E Display only Spanish customers Let the user choose filter ADO Sort Sort the records on a specified fieldname ascending Sort the records on a specified fieldname descending Let the user choose what column to sort on ADO Recordset Object GetRows GetString

VBScript Functions

Date/Time functions Conversion functions Format functions Math functions Array functions String functions Other functions

Date/Time Functions

FunctionDescription
CDateConverts a valid date and time expression to the variant of subtype Date
DateReturns the current system date
DateAddReturns a date to which a specified time interval has been added
DateDiffReturns the number of intervals between two dates
DatePartReturns the specified part of a given date
DateSerialReturns the date for a specified year, month, and day
DateValueReturns a date
DayReturns a number that represents the day of the month (between 1 and 31, inclusive)
FormatDateTimeReturns an expression formatted as a date or time
HourReturns a number that represents the hour of the day (between 0 and 23, inclusive)
IsDateReturns a Boolean value that indicates if the evaluated expression can be converted to a date
MinuteReturns a number that represents the minute of the hour (between 0 and 59, inclusive)
MonthReturns a number that represents the month of the year (between 1 and 12, inclusive)
MonthNameReturns the name of a specified month
NowReturns the current system date and time
SecondReturns a number that represents the second of the minute (between 0 and 59, inclusive)
TimeReturns the current system time
TimerReturns the number of seconds since 12:00 AM
TimeSerialReturns the time for a specific hour, minute, and second
TimeValueReturns a time
WeekdayReturns a number that represents the day of the week (between 1 and 7, inclusive)
WeekdayNameReturns the weekday name of a specified day of the week
YearReturns a number that represents the year

Conversion Functions

FunctionDescription
AscConverts the first letter in a string to ANSI code
CBoolConverts an expression to a variant of subtype Boolean
CByteConverts an expression to a variant of subtype Byte
CCurConverts an expression to a variant of subtype Currency
CDateConverts a valid date and time expression to the variant of subtype Date
CDblConverts an expression to a variant of subtype Double
ChrConverts the specified ANSI code to a character
CIntConverts an expression to a variant of subtype Integer
CLngConverts an expression to a variant of subtype Long
CSngConverts an expression to a variant of subtype Single
CStrConverts an expression to a variant of subtype String
HexReturns the hexadecimal value of a specified number
OctReturns the octal value of a specified number

Format Functions

FunctionDescription
FormatCurrencyReturns an expression formatted as a currency value
FormatDateTimeReturns an expression formatted as a date or time
FormatNumberReturns an expression formatted as a number
FormatPercentReturns an expression formatted as a percentage

Math Functions

FunctionDescription
AbsReturns the absolute value of a specified number
AtnReturns the arctangent of a specified number
CosReturns the cosine of a specified number (angle)
ExpReturns e raised to a power
HexReturns the hexadecimal value of a specified number
IntReturns the integer part of a specified number
FixReturns the integer part of a specified number
LogReturns the natural logarithm of a specified number
OctReturns the octal value of a specified number
RndReturns a random number less than 1 but greater or equal to 0
SgnReturns an integer that indicates the sign of a specified number
SinReturns the sine of a specified number (angle)
SqrReturns the square root of a specified number
TanReturns the tangent of a specified number (angle)

Array Functions

FunctionDescription
ArrayReturns a variant containing an array
FilterReturns a zero-based array that contains a subset of a string array based on a filter criteria
IsArrayReturns a Boolean value that indicates whether a specified variable is an array
JoinReturns a string that consists of a number of substrings in an array
LBoundReturns the smallest subscript for the indicated dimension of an array
SplitReturns a zero-based, one-dimensional array that contains a specified number of substrings
UBoundReturns the largest subscript for the indicated dimension of an array

String Functions

FunctionDescription
InStrReturns the position of the first occurrence of one string within another. The search begins at the first character of the string
InStrRevReturns the position of the first occurrence of one string within another. The search begins at the last character of the string
LCaseConverts a specified string to lowercase
LeftReturns a specified number of characters from the left side of a string
LenReturns the number of characters in a string
LTrimRemoves spaces on the left side of a string
RTrimRemoves spaces on the right side of a string
TrimRemoves spaces on both the left and the right side of a string
MidReturns a specified number of characters from a string
ReplaceReplaces a specified part of a string with another string a specified number of times
RightReturns a specified number of characters from the right side of a string
SpaceReturns a string that consists of a specified number of spaces
StrCompCompares two strings and returns a value that represents the result of the comparison
StringReturns a string that contains a repeating character of a specified length
StrReverseReverses a string
UCaseConverts a specified string to uppercase

Other Functions

FunctionDescription
CreateObjectCreates an object of a specified type
EvalEvaluates an expression and returns the result
IsEmptyReturns a Boolean value that indicates whether a specified variable has been initialized or not
IsNullReturns a Boolean value that indicates whether a specified expression contains no valid data (Null)
IsNumericReturns a Boolean value that indicates whether a specified expression can be evaluated as a number
IsObjectReturns a Boolean value that indicates whether the specified expression is an automation object
RGBReturns a number that represents an RGB color value
RoundRounds a number
ScriptEngineReturns the scripting language in use
ScriptEngineBuildVersionReturns the build version number of the scripting engine in use
ScriptEngineMajorVersionReturns the major version number of the scripting engine in use
ScriptEngineMinorVersionReturns the minor version number of the scripting engine in use
TypeNameReturns the subtype of a specified variable
VarTypeReturns a value that indicates the subtype of a specified variable
id="mypagediv2" style="position:relative;text-align:center;">

VBScript Keywords

KeywordDescription
Empty Used to indicate an uninitialized variable value. A variable value is uninitialized when it is first created and no value is assigned to it, or when a variable value is explicitly set to empty. Example: Dim x 'the variable x is uninitialized! x="ff" 'the variable x is NOT uninitialized anymore x=Empty 'the variable x is uninitialized! Note: This is not the same as Null!!
IsEmpty Used to test if a variable is uninitialized. Example: If (IsEmpty(x)) 'is x uninitialized?
NothingUsed to indicate an uninitialized object value, or to disassociate an object variable from an object to release system resources.Example: Set myObject=Nothing
Is NothingUsed to test if a value is an initialized object. Example: If (myObject Is Nothing) 'is it unset? Note: If you compare a value to Nothing, you will not get the right result! Example: If (myObject = Nothing) 'always false!
NullUsed to indicate that a variable contains no valid data. One way to think of Null is that someone has explicitly set the value to "invalid", unlike Empty where the value is "not set". Note: This is not the same as Empty or Nothing!! Example: x=Null 'x contains no valid data
IsNullUsed to test if a value contains invalid data. Example: if (IsNull(x)) 'is x invalid?
TrueUsed to indicate a Boolean condition that is correct
FalseUsed to indicate a Boolean condition that is not correct (False has a value of 0)
id="mypagediv2" style="position:relative;text-align:center;">

ASP Response Object

More Examples

Write text with ASP How to write text with ASP. Format text with HTML tags in ASP How to combine text and HTML tags with ASP. Redirect the user to a different URL How to redirect the user to a different URL. Show a random link How to create a random link. Controlling the buffer How to control the buffer. Clear the buffer How to clear the buffer. End a script in the middle of processing and return the result How to end a script in the middle of processing. Set how many minutes a page will be cached in a browser before it expires How to specify how many minutes a page will be cached in a browser before it expires. Set a date/time when a page cached in a browser will expire How to specify a date/time a page cached in a browser will expire. Check if the user is still connected to the server How to check if a user is disconnected from the server. Set the type of content How to specify the type of content. Set the name of the character set How to specify the name of the character set.

Response Object

The ASP Response object is used to send output to the user from the server. Its collections, properties, and methods are described below:

Collections

CollectionDescription
CookiesSets a cookie value. If the cookie does not exist, it will be created, and take the value that is specified

Properties

PropertyDescription
BufferSpecifies whether to buffer the page output or not
CacheControlSets whether a proxy server can cache the output generated by ASP or not
CharsetAppends the name of a character-set to the content-type header in the Response object
ContentTypeSets the HTTP content type for the Response object
ExpiresSets how long (in minutes) a page will be cached on a browser before it expires
ExpiresAbsoluteSets a date and time when a page cached on a browser will expire
IsClientConnectedIndicates if the client has disconnected from the server
PicsAppends a value to the PICS label response header
StatusSpecifies the value of the status line returned by the server

Methods

MethodDescription
AddHeaderAdds a new HTTP header and a value to the HTTP response
AppendToLogAdds a string to the end of the server log entry
BinaryWriteWrites data directly to the output without any character conversion
ClearClears any buffered HTML output
EndStops processing a script, and returns the current result
FlushSends buffered HTML output immediately
RedirectRedirects the user to a different URL
WriteWrites a specified string to the output

ASP Request Object

QueryString Collection Examples

Send query information when a user clicks on a link How to send query information to a page within a link, and retrieve that information on the destination page (which is, in this example, the same page). A QueryString collection in its simplest use Use the QueryString collection to retrieve the values from a form (the form uses the get method - the information sent is visible to everybody). How to use information from forms How to use the values retrieved from a form. More information from a form What the QueryString collection contains if several input fields have equal names. It also shows how to use the Count keyword to count the "name" property.

Form Collection Examples

A form collection in its simplest use How the Form collection retrieves the values from a form (the form uses the post method - the information sent is invisible to others). How to use information from forms How to use the values retrieved from a form. More information from a form What the Form collection contains if several input fields have equal names. It also shows how to use the Count keyword to count the "name" property. A form with radio buttons How to interact with the user through radio buttons. A form with checkboxes How to interact with the user through checkboxes.

Other Examples

Get the server variables How to get the visitor's browser type, IP address, and more. Create a welcome cookie How to create a Welcome Cookie. Find the total number of bytes the user sent How to find the total number of bytes the user sent in the Request object.

Request Object

When a browser asks for a page from a server, it is called a request. The Request object is used to get information from a visitor. Its collections, properties, and methods are described below:

Collections

CollectionDescription
ClientCertificateContains all the field values stored in the client certificate
CookiesContains all the cookie values sent in a HTTP request
FormContains all the form (input) values from a form that uses the post method
QueryStringContains all the variable values in a HTTP query string
ServerVariablesContains all the server variable values

Properties

PropertyDescription
TotalBytesReturns the total number of bytes the client sent in the body of the request

Methods

MethodDescription
BinaryReadRetrieves the data sent to the server from the client as part of a post request and stores it in a safe array

ASP Application Object

is called an application. The Application object is used to tie these files together.

Application Object

An application on the Web may consists of several ASP files that work together to perform some purpose. The Application object is used to tie these files together. The Application object is used to store and access variables from any page, just like the Session object. The difference is that ALL users share ONE Application object (with Sessions there is ONE Session object for EACH user). The Application object holds information that will be used by many pages in the application (like database connection information). The information can be accessed from any page. The information can also be changed in one place, and the changes will automatically be reflected on all pages. The Application object's collections, methods, and events are described below:

Collections

CollectionDescription
ContentsContains all the items appended to the application through a script command
StaticObjectsContains all the objects appended to the application with the HTML <object> tag

Methods

MethodDescription
Contents.RemoveDeletes an item from the Contents collection
Contents.RemoveAll()Deletes all items from the Contents collection
LockPrevents other users from modifying the variables in the Application object
UnlockEnables other users to modify the variables in the Application object (after it has been locked using the Lock method)

Events

EventDescription
Application_OnEndOccurs when all user sessions are over, and the application ends
Application_OnStartOccurs before the first new session is created (when the Application object is first referenced)

ASP Session Object

More Examples

Set and return the LCID Set or return an integer that specifies a location or region. Contents like date, time, and currency will be displayed according to that location or region. Return the SessionID Return a unique id for each user. The id is generated by the server. A session's timeout Set and return the timeout (in minutes) of a session.

Session Object

When you are working with an application on your computer, you open it, do some changes and then you close it. This is much like a Session. The computer knows who you are. It knows when you open the application and when you close it. However, on the internet there is one problem: the web server does not know who you are and what you do, because the HTTP address doesn't maintain state. ASP solves this problem by creating a unique cookie for each user. The cookie is sent to the user's computer and it contains information that identifies the user. This interface is called the Session object. The Session object stores information about, or change settings for a user session. Variables stored in a Session object hold information about one single user, and are available to all pages in one application. Common information stored in session variables are name, id, and preferences. The server creates a new Session object for each new user, and destroys the Session object when the session expires. The Session object's collections, properties, methods, and events are described below:

Collections

CollectionDescription
ContentsContains all the items appended to the session through a script command
StaticObjectsContains all the objects appended to the session with the HTML <object> tag

Properties

PropertyDescription
CodePageSpecifies the character set that will be used when displaying dynamic content
LCIDSets or returns an integer that specifies a location or region. Contents like date, time, and currency will be displayed according to that location or region
SessionIDReturns a unique id for each user. The unique id is generated by the server
TimeoutSets or returns the timeout period (in minutes) for the Session object in this application

Methods

MethodDescription
AbandonDestroys a user session
Contents.RemoveDeletes an item from the Contents collection
Contents.RemoveAll()Deletes all items from the Contents collection

Events

EventDescription
Session_OnEndOccurs when a session ends
Session_OnStartOccurs when a session starts

ASP Server Object

More Examples

When was a file last modified? Check when a file was last modified. Open a text file for reading Open "Textfile.txt" for reading. Homemade hit counter

Server Object

The ASP Server object is used to access properties and methods on the server. Its properties and methods are described below:

Properties

PropertyDescription
ScriptTimeoutSets or returns the maximum number of seconds a script can run before it is terminated

Methods

MethodDescription
CreateObjectCreates an instance of an object
ExecuteExecutes an ASP file from inside another ASP file
GetLastError()Returns an ASPError object that describes the error condition that occurred
HTMLEncodeApplies HTML encoding to a specified string
MapPathMaps a specified path to a physical path
TransferSends (transfers) all the information created in one ASP file to a second ASP file
URLEncodeApplies URL encoding rules to a specified string

ASP ASPError Object

The ASPError Object

The ASPError object was implemented in ASP 3.0 and is available in IIS5 and later. The ASPError object is used to display detailed information of any error that occurs in scripts in an ASP page. Note: The ASPError object is created when Server.GetLastError is called, so the error information can only be accessed by using the Server.GetLastError method. The ASPError object's properties are described below (all properties are read-only):

Properties

PropertyDescription
ASPCodeReturns an error code generated by IIS
ASPDescriptionReturns a detailed description of the error (if the error is ASP-related)
CategoryReturns the source of the error (was the error generated by ASP? By a scripting language? By an object?)
ColumnReturns the column position within the file that generated the error
DescriptionReturns a short description of the error
FileReturns the name of the ASP file that generated the error
LineReturns the line number where the error was detected
NumberReturns the standard COM error code for the error
SourceReturns the actual source code of the line where the error occurred

ASP FileSystemObject Object

a server.

More Examples

Does a specified file exist? How to check if a file exists. Does a specified folder exist? How to check if a folder exists. Does a specified drive exist? How to check if a drive exists. Get the name of a specified drive How to get the name of a specified drive. Get the name of the parent folder of a specified path How to get the name of the parent folder of a specified path. Get file name How to get the file name of the last component in a specified path. Get the file extension How to get the file extension of the last component in a specified path. Get the base name of a file or folder How to get the base name of a file or folder, in a specified path.

The FileSystemObject Object

The FileSystemObject object is used to access the file system on a server. This object can manipulate files, folders, and directory paths. It is also possible to retrieve file system information with this object. The following code creates a text file (c:\test.txt) and then writes some text to the file: <% dim fs,fname set fs=Server.CreateObject("Scripting.FileSystemObject") set fname=fs.CreateTextFile("c:\test.txt",true) fname.WriteLine("Hello World!") fname.Close set fname=nothing set fs=nothing %> The FileSystemObject object's properties and methods are described below:

Properties

PropertyDescription
DrivesReturns a collection of all Drive objects on the computer

Methods

MethodDescription
BuildPathAppends a name to an existing path
CopyFileCopies one or more files from one location to another
CopyFolderCopies one or more folders from one location to another
CreateFolderCreates a new folder
CreateTextFileCreates a text file and returns a TextStream object that can be used to read from, or write to the file
DeleteFileDeletes one or more specified files
DeleteFolderDeletes one or more specified folders
DriveExistsChecks if a specified drive exists
FileExistsChecks if a specified file exists
FolderExistsChecks if a specified folder exists
GetAbsolutePathNameReturns the complete path from the root of the drive for the specified path
GetBaseNameReturns the base name of a specified file or folder
GetDriveReturns a Drive object corresponding to the drive in a specified path
GetDriveNameReturns the drive name of a specified path
GetExtensionNameReturns the file extension name for the last component in a specified path
GetFileReturns a File object for a specified path
GetFileNameReturns the file name or folder name for the last component in a specified path
GetFolderReturns a Folder object for a specified path
GetParentFolderNameReturns the name of the parent folder of the last component in a specified path
GetSpecialFolderReturns the path to some of Windows' special folders
GetTempNameReturns a randomly generated temporary file or folder
MoveFileMoves one or more files from one location to another
MoveFolderMoves one or more folders from one location to another
OpenTextFileOpens a file and returns a TextStream object that can be used to access the file

ASP TextStream Object

More Examples

Read textfile How to read from a text file. Read only a part of a textfile How to only read a part of a TextStream file. Read one line of a textfile How to read one line from a TextStream file. Read all lines from a textfile How to read all the lines from a TextStream file. Skip a part of a textfile How to skip a specified number of characters when reading the TextStream file. Skip a line of a textfile How to skip a line when reading the TextStream file. Return line-number How to return the current line number in a TextStream file. Get column number How to get the column number of the current character in a file.

The TextStream Object

The TextStream object is used to access the contents of text files. The following code creates a text file (c:\test.txt) and then writes some text to the file (the variable f is an instance of the TextStream object): <% dim fs,f set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.CreateTextFile("c:\test.txt",true) f.WriteLine("Hello World!") f.Close set f=nothing set fs=nothing %> To create an instance of the TextStream object you can use the CreateTextFile or OpenTextFile methods of the FileSystemObject object, or you can use the OpenAsTextStream method of the File object. The TextStream object's properties and methods are described below:

Properties

PropertyDescription
AtEndOfLineReturns true if the file pointer is positioned immediately before the end-of-line marker in a TextStream file, and false if not
AtEndOfStreamReturns true if the file pointer is at the end of a TextStream file, and false if not
ColumnReturns the column number of the current character position in an input stream
LineReturns the current line number in a TextStream file

Methods

MethodDescription
CloseCloses an open TextStream file
ReadReads a specified number of characters from a TextStream file and returns the result
ReadAllReads an entire TextStream file and returns the result
ReadLineReads one line from a TextStream file and returns the result
SkipSkips a specified number of characters when reading a TextStream file
SkipLineSkips the next line when reading a TextStream file
WriteWrites a specified text to a TextStream file
WriteLineWrites a specified text and a new-line character to a TextStream file
WriteBlankLinesWrites a specified number of new-line character to a TextStream file

ASP Drive Object

More Examples

Get the total size of a specified drive How to get the total size of a specified drive. Get the available space of a specified drive How to get the available space of a specified drive. Get the free space of a specified drive How to get the free space of a specified drive. Get the drive letter of a specified drive How to get the drive letter of a specified drive. Get the drive type of a specified drive How to get the drive type of a specified drive. Get the file system of a specified drive How to get the file system of a specified drive. Is the drive ready? How to check whether a specified drive is ready. Get the path of a specified drive How to get the path of a specified drive. Get the root folder of a specified drive How to get the root folder of a specified drive. Get the serialnumber of a specified drive How to get the serialnumber of a specified drive.

The Drive Object

The Drive object is used to return information about a local disk drive or a network share. The Drive object can return information about a drive's type of file system, free space, serial number, volume name, and more. Note: You cannot return information about a drive's content with the Drive object. For this purpose you will have to use the Folder object. To work with the properties of the Drive object, you will have to create an instance of the Drive object through the FileSystemObject object. First; create a FileSystemObject object and then instantiate the Drive object through the GetDrive method or the Drives property of the FileSystemObject object. The Drive object's properties are described below:

Properties

PropertyDescription
AvailableSpaceReturns the amount of available space to a user on a specified drive or network share
DriveLetterReturns one uppercase letter that identifies the local drive or a network share
DriveTypeReturns the type of a specified drive
FileSystemReturns the file system in use for a specified drive
FreeSpaceReturns the amount of free space to a user on a specified drive or network share
IsReadyReturns true if the specified drive is ready and false if not
PathReturns an uppercase letter followed by a colon that indicates the path name for a specified drive
RootFolderReturns a Folder object that represents the root folder of a specified drive
SerialNumberReturns the serial number of a specified drive
ShareNameReturns the network share name for a specified drive
TotalSizeReturns the total size of a specified drive or network share
VolumeNameSets or returns the volume name of a specified drive

ASP File Object

More Examples

When was the file last modified? How to get the date and time a specified file was last modified. When was the file last accessed? How to get the date and time a specified file was last accessed. Return the attributes of a specified file How to return the attributes of a specified file.

The File Object

The File object is used to return information about a specified file. To work with the properties and methods of the File object, you will have to create an instance of the File object through the FileSystemObject object. First; create a FileSystemObject object and then instantiate the File object through the GetFile method of the FileSystemObject object or through the Files property of the Folder object. The following code uses the GetFile method of the FileSystemObject object to instantiate the File object and the DateCreated property to return the date when the specified file was created:

Example

<% Dim fs,f Set fs=Server.CreateObject("Scripting.FileSystemObject") Set f=fs.GetFile("c:\test.txt") Response.Write("File created: " & f.DateCreated) set f=nothing set fs=nothing %> Show Example The File object's properties and methods are described below:

Properties

PropertyDescription
AttributesSets or returns the attributes of a specified file
DateCreatedReturns the date and time when a specified file was created
DateLastAccessedReturns the date and time when a specified file was last accessed
DateLastModifiedReturns the date and time when a specified file was last modified
DriveReturns the drive letter of the drive where a specified file or folder resides
NameSets or returns the name of a specified file
ParentFolderReturns the folder object for the parent of the specified file
PathReturns the path for a specified file
ShortNameReturns the short name of a specified file (the 8.3 naming convention)
ShortPathReturns the short path of a specified file (the 8.3 naming convention)
SizeReturns the size, in bytes, of a specified file
TypeReturns the type of a specified file

Methods

MethodDescription
CopyCopies a specified file from one location to another
DeleteDeletes a specified file
MoveMoves a specified file from one location to another
OpenAsTextStream Opens a specified file and returns a TextStream object to access the file

ASP Folder Object

The Folder Object

The Folder object is used to return information about a specified folder. To work with the properties and methods of the Folder object, you will have to create an instance of the Folder object through the FileSystemObject object. First; create a FileSystemObject object and then instantiate the Folder object through the GetFolder method of the FileSystemObject object. The following code uses the GetFolder method of the FileSystemObject object to instantiate the Folder object and the DateCreated property to return the date when the specified folder was created: <% Dim fs,fo Set fs=Server.CreateObject("Scripting.FileSystemObject") Set fo=fs.GetFolder("c:\test") Response.Write("Folder created: " & fo.DateCreated) set fo=nothing set fs=nothing %> Output: Folder created: 10/22/2008 10:01:19 AM The Folder object's collections, properties, and methods are described below:

Collections

CollectionDescription
FilesReturns a collection of all the files in a specified folder
SubFoldersReturns a collection of all subfolders in a specified folder

Properties

PropertyDescription
AttributesSets or returns the attributes of a specified folder
DateCreatedReturns the date and time when a specified folder was created
DateLastAccessedReturns the date and time when a specified folder was last accessed
DateLastModifiedReturns the date and time when a specified folder was last modified
DriveReturns the drive letter of the drive where the specified folder resides
IsRootFolderReturns true if a folder is the root folder and false if not
NameSets or returns the name of a specified folder
ParentFolderReturns the parent folder of a specified folder
PathReturns the path for a specified folder
ShortNameReturns the short name of a specified folder (the 8.3 naming convention)
ShortPathReturns the short path of a specified folder (the 8.3 naming convention)
SizeReturns the size of a specified folder
TypeReturns the type of a specified folder

Methods

MethodDescription
CopyCopies a specified folder from one location to another
DeleteDeletes a specified folder
MoveMoves a specified folder from one location to another
CreateTextFileCreates a new text file in the specified folder and returns a TextStream object to access the file

ASP Dictionary Object

More Examples

Does a specified key exist? How to create a Dictionary object, and then use the Exists method to check if a specified key exists. Return an array of all items How to use the Items method to return an array of all the items. Return an array of all keys How to use the Keys method to return an array of all the keys. Return the value of an item How to use the Item property to return the value of an item. Set a key How to use the Key property to set a key in a Dictionary object. Return the number of key/item pairs How to use the Count property to return the number of key/item pairs.

The Dictionary Object

The Dictionary object is used to store information in name/value pairs (referred to as key and item). The Dictionary object might seem similar to Arrays, however, the Dictionary object is a more desirable solution to manipulate related data. Comparing Dictionaries and Arrays: Keys are used to identify the items in a Dictionary object You do not have to call ReDim to change the size of the Dictionary object When deleting an item from a Dictionary, the remaining items will automatically shift up Dictionaries cannot be multidimensional, Arrays can Dictionaries have more built-in functions than Arrays Dictionaries work better than arrays on accessing random elements frequently Dictionaries work better than arrays on locating items by their content The following example creates a Dictionary object, adds some key/item pairs to it, and retrieves the item value for the key gr: <% Dim d Set d=Server.CreateObject("Scripting.Dictionary") d.Add "re","Red" d.Add "gr","Green" d.Add "bl","Blue" d.Add "pi","Pink" Response.Write("The value of key gr is: " & d.Item("gr")) %> Output: The value of key gr is: Green The Dictionary object's properties and methods are described below:

Properties

PropertyDescription
CompareModeSets or returns the comparison mode for comparing keys in a Dictionary object
CountReturns the number of key/item pairs in a Dictionary object
ItemSets or returns the value of an item in a Dictionary object
KeySets a new key value for an existing key value in a Dictionary object

Methods

MethodDescription
AddAdds a new key/item pair to a Dictionary object
ExistsReturns a Boolean value that indicates whether a specified key exists in the Dictionary object
ItemsReturns an array of all the items in a Dictionary object
KeysReturns an array of all the keys in a Dictionary object
RemoveRemoves one specified key/item pair from the Dictionary object
RemoveAllRemoves all the key/item pairs in the Dictionary object

ASP AdRotator Component

The ASP AdRotator component creates an AdRotator object that displays a different image each time a user enters or refreshes a page. A text file includes information about the images. Note: The AdRotator does not work with Internet Information Server 7 (IIS7).

Syntax

<% set adrotator=server.createobject("MSWC.AdRotator") adrotator.GetAdvertisement("textfile.txt") %>

ASP AdRotator Example

Assume that we have the following text file, named "ads.txt": REDIRECT banners.asp * w3s.gif https://www.w3schools.com Free Tutorials from W3Schools 50 xmlspy.gif https://www.altova.com XML Editor from Altova 50 The lines below the asterisk in the text file above specifies the name of the images (ads) to be displayed, the hyperlink addresses, the alternate text (for the images), and the display rates (in percent). The first line in the text file above specifies what to happen when a visitor clicks on one of the images. The redirection page (banners.asp) will receive a querystring with the URL to redirect to. Tip: To specify the height, width, and border of the image, you can insert the following lines under REDIRECT: REDIRECT banners.asp WIDTH 468 HEIGHT 60 BORDER 0 * w3s.gif ... The "banners.asp" file looks like this:

Example

<% url=Request.QueryString("url") If url<>"" then Response.Redirect(url) %> <!DOCTYPE html> <html> <body> <% set adrotator=Server.CreateObject("MSWC.AdRotator") response.write(adrotator.GetAdvertisement("textfile.txt")) %> </body> </html> Show Example That's all!!

ASP AdRotator Properties

Property DescriptionExample
BorderSpecifies the size of the borders around the advertisement<% set adrot=Server.CreateObject("MSWC.AdRotator") adrot.Border="2" Response.Write(adrot.GetAdvertisement("ads.txt")) %>
ClickableSpecifies whether the advertisement is a hyperlink<% set adrot=Server.CreateObject("MSWC.AdRotator") adrot.Clickable=false Response.Write(adrot.GetAdvertisement("ads.txt")) %>
TargetFrameName of the frame to display the advertisement<% set adrot=Server.CreateObject("MSWC.AdRotator") adrot.TargetFrame="target='_blank'" Response.Write(adrot.GetAdvertisement("ads.txt")) %>

ASP AdRotator Methods

Method DescriptionExample
GetAdvertisementReturns HTML that displays the advertisement in the page<% set adrot=Server.CreateObject("MSWC.AdRotator") Response.Write(adrot.GetAdvertisement("ads.txt")) %>

ASP Browser Capabilities Component

The ASP Browser Capabilities component creates a BrowserType object that determines the type, capabilities and version number of a visitor's browser. When a browser connects to a server, a User Agent header is also sent to the server. This header contains information about the browser. The BrowserType object compares the information in the header with information in a file on the server called "Browscap.ini". If there is a match between the browser type and version number in the header and the information in the "Browscap.ini" file, the BrowserType object can be used to list the properties of the matching browser. If there is no match for the browser type and version number in the Browscap.ini file, it will set every property to "UNKNOWN".

Syntax

<% Set MyBrow=Server.CreateObject("MSWC.BrowserType") %>

ASP Browser Capabilities Example

The example below creates a BrowserType object in an ASP file, and displays some of the capabilities of your browser:

Example

<!DOCTYPE html> <html> <body> <% Set MyBrow=Server.CreateObject("MSWC.BrowserType") %> <table border="0" width="100%"> <tr> <th>Client OS</th><th><%=MyBrow.platform%></th> </tr><tr> <td >Web Browser</td><td ><%=MyBrow.browser%></td> </tr><tr> <td>Browser version</td><td><%=MyBrow.version%></td> </tr><tr> <td>Frame support?</td><td><%=MyBrow.frames%></td> </tr><tr> <td>Table support?</td><td><%=MyBrow.tables%></td> </tr><tr> <td>Sound support?</td><td><%=MyBrow.backgroundsounds%></td> </tr><tr> <td>Cookies support?</td><td><%=MyBrow.cookies%></td> </tr><tr> <td>VBScript support?</td><td><%=MyBrow.vbscript%></td> </tr><tr> <td>JavaScript support?</td><td><%=MyBrow.javascript%></td> </tr> </table> </body> </html> Output:
Client OS WinNT
Web BrowserIE
Browser version5.0
Frame support?True
Table support?True
Sound support?True
Cookies support?True
VBScript support?True
JavaScript support?True
Show Example

The Browscap.ini File

The "Browscap.ini" file is used to declare properties and to set default values for browsers. This section is not a tutorial on how to maintain "Browscap.ini" files, it only shows you the basics; so you get an idea what the file is all about. The "Browscap.ini" file can contain the following: [;comments] [HTTPUserAgentHeader] [parent=browserDefinition] [property1=value1] [propertyN=valueN] [Default Browser Capability Settings] [defaultProperty1=defaultValue1] [defaultPropertyN=defaultValueN]
ParameterDescription
commentsOptional. Any line that starts with a semicolon are ignored by the BrowserType object
HTTPUserAgentHeaderOptional. Specifies the HTTP User Agent header to associate with the browser-property value statements specified in propertyN. Wildcard characters are allowed
browserDefinitionOptional. Specifies the HTTP User Agent header-string of a browser to use as the parent browser. The current browser's definition will inherit all of the property values declared in the parent browser's definition
propertyNOptional. Specifies the browser properties. The following table lists some possible properties: ActiveXControls - Support ActiveX controls? Backgroundsounds - Support background sounds? Cdf - Support Channel Definition Format for Webcasting? Tables - Support tables? Cookies - Support cookies? Frames - Support frames? Javaapplets - Support Java applets? Javascript - Supports JScript? Vbscript - Supports VBScript? Browser - Specifies the name of the browser Beta - Is the browser beta software? Platform - Specifies the platform that the browser runs on Version - Specifies the version number of the browser
valueNOptional. Specifies the value of propertyN. Can be a string, an integer (prefix with #), or a Boolean value
defaultPropertyNOptional. Specifies the name of the browser property to which to assign a default value if none of the defined HTTPUserAgentHeader values match the HTTP User Agent header sent by the browser
defaultValueNOptional. Specifies the value of defaultPropertyN. Can be a string, an integer (prefix with #), or a Boolean value
A "Browscap.ini" file might look something like this: ;IE 5.0 [IE 5.0] browser=IE Version=5.0 majorver=#5 minorver=#0 frames=TRUE tables=TRUE cookies=TRUE backgroundsounds=TRUE vbscript=TRUE javascript=TRUE javaapplets=TRUE ActiveXControls=TRUE beta=False ;DEFAULT BROWSER [*] browser=Default frames=FALSE tables=TRUE cookies=FALSE backgroundsounds=FALSE vbscript=FALSE javascript=FALSE

ASP Content Linking Component

The Content Linking Component Build a table of contents. The Content Linking Component 2 Use the Content Linking Component to navigate between the pages in a text file.

ASP Content Linking Component

The ASP Content Linking component is used to create a quick and easy navigation system! The Content Linking component returns a Nextlink object that is used to hold a list of Web pages to be navigated.

Syntax

<% Set nl=Server.CreateObject("MSWC.NextLink") %>

ASP Content Linking Example

First we create a text file - "links.txt": asp_intro.asp ASP Intro asp_syntax.asp ASP Syntax asp_variables.asp ASP Variables asp_procedures.asp ASP Procedures The text file above contains the pages to be navigated. The pages must be listed in the same order you want them to be displayed, and it must also contain a description for each file name (use the tab key to separate file name from description). Note: If you want to add a page, or change the order of the pages in the list; you only have to modify the text file! The navigation will automatically be corrected! Then we create an include file, "nlcode.inc". The .inc file creates a NextLink object to navigate between the pages listed in "links.txt". "nlcode.inc": <% dim nl Set nl=Server.CreateObject("MSWC.NextLink") if (nl.GetListIndex("links.txt")>1) then Response.Write("<a href='" & nl.GetPreviousURL("links.txt")) Response.Write("'>Previous Page</a>") end if Response.Write("<a href='" & nl.GetNextURL("links.txt")) Response.Write("'>Next Page</a>") %> In each of the .asp pages listed in the text file "links.txt", put one line of code: <!-- #include file="nlcode.inc"-->. This line will include the code in "nlcode.inc" on every page listed in "links.txt" and the navigation will work.

ASP Content Linking Component's Methods

MethodDescription Example
GetListCount Returns the number of items listed in the Content Linking List file <% dim nl,c Set nl=Server.CreateObject("MSWC.NextLink") c=nl.GetListCount("links.txt") Response.Write("There are ") Response.Write(c) Response.Write(" items in the list") %>Output: There are 4 items in the list
GetListIndex Returns the index number of the current item in the Content Linking List file. The index number of the first item is 1. 0 is returned if the current page is not in the Content Linking List file <% dim nl,c Set nl=Server.CreateObject("MSWC.NextLink") c=nl.GetListIndex("links.txt") Response.Write("Item number ") Response.Write(c) %>Output: Item number 3
GetNextDescription Returns the text description of the next item listed in the Content Linking List file. If the current page is not found in the list file it returns the text description of the last page on the list <% dim nl,c Set nl=Server.CreateObject("MSWC.NextLink") c=nl.GetNextDescription("links.txt") Response.Write("Next ") Response.Write("description is: ") Response.Write(c) %>Next description is: ASP Variables
GetNextURLReturns the URL of the next item listed in the Content Linking List file. If the current page is not found in the list file it returns the URL of the last page on the list<% dim nl,c Set nl=Server.CreateObject("MSWC.NextLink") c=nl.GetNextURL("links.txt") Response.Write("Next ") Response.Write("URL is: ") Response.Write(c) %>Next URL is: asp_variables.asp
GetNthDescription Returns the description of the Nth page listed in the Content Linking List file <% dim nl,c Set nl=Server.CreateObject("MSWC.NextLink") c=nl.GetNthDescription("links.txt",3) Response.Write("Third ") Response.Write("description is: ") Response.Write(c) %>Third description is: ASP Variables
GetNthURLReturns the URL of the Nth page listed in the Content Linking List file<% dim nl,c Set nl=Server.CreateObject("MSWC.NextLink") c=nl.GetNthURL("links.txt",3) Response.Write("Third ") Response.Write("URL is: ") Response.Write(c) %>Third URL is: asp_variables.asp
GetPreviousDescription Returns the text description of the previous item listed in the Content Linking List file. If the current page is not found in the list file it returns the text description of the first page on the list <% dim nl,c Set nl=Server.CreateObject("MSWC.NextLink") c=nl.GetPreviousDescription("links.txt") Response.Write("Previous ") Response.Write("description is: ") Response.Write(c) %>Previous description is: ASP Variables
GetPreviousURL Returns the URL of the previous item listed in the Content Linking List file. If the current page is not found in the list file it returns the URL of the first page on the list <% dim nl,c Set nl=Server.CreateObject("MSWC.NextLink") c=nl.GetPreviousURL("links.txt") Response.Write("Previous ") Response.Write("URL is: ") Response.Write(c) %>Previous URL is: asp_variables.asp

ASP Content Rotator Component (ASP 3.0)

The ASP Content Rotator component creates a ContentRotator object that displays a different content string each time a visitor enters or refreshes a page. A text file, called the Content Schedule File, includes the information about the content strings. The content strings can contain HTML tags so you can display any type of content that HTML can represent: text, images, colors, or hyperlinks.

Syntax

<% Set cr=Server.CreateObject("MSWC.ContentRotator") %>

ASP Content Rotator Example

The following example displays a different content each time a visitor views the Web page. First, create a text file named "textads.txt" and place it in a subfolder called "text". "textads.txt": %% #3 <h2>This is a great day!!</h2> %% #3 <img src="smiley.gif"> %% #4 <a href="https://www.w3schools.com">Visit W3Schools.com</a> Notice the #number at the beginning of each content string. This number is an optional parameter that indicates the relative weight of the HTML content string. In the text file above, the Content Rotator will display the first and second content string three-tenth of the time, and the third string four-tenths of the time. Then, create an ASP file, and insert the following code:

Example

<html> <body> <% set cr=server.createobject("MSWC.ContentRotator") response.write(cr.ChooseContent("text/textads.txt")) %> </body> </html> Show Example

ASP Content Rotator Component's Methods

Method Description Example
ChooseContentGets and displays a content string<% dim cr Set cr=Server.CreateObject("MSWC.ContentRotator") response.write(cr.ChooseContent("text/textads.txt")) %>Output: Smiley
GetAllContent Retrieves and displays all of the content strings in the text file <% dim cr Set cr=Server.CreateObject("MSWC.ContentRotator") response.write(cr.GetAllContent("text/textads.txt")) %> Output:

This is a great day!!

Smiley Visit W3Schools.com

ASP Quick Reference

Basic Syntax

ASP scripts are surrounded by <% and %>. To write some output to a browser: <html> <body> <% response.write("Hello World!") %> </body> </html> The default language in ASP is VBScript. To use another scripting language, insert a language specification at the top of the ASP page: <%@ language="javascript" %> <html> <body> <% .... %>

Forms and User Input

Request.QueryString is used to collect values in a form with method="get". Information sent from a form with the GET method is visible to everyone (it will be displayed in the browser's address bar) and has limits on the amount of information to send. Request.Form is used to collect values in a form with method="post". Information sent from a form with the POST method is invisible to others and has no limits on the amount of information to send.

ASP Cookies

A cookie is often used to identify a user. A cookie is a small file that the server embeds on the user's computer. Each time the same computer requests for a page with a browser, it will send the cookie too. The Response.Cookies command is used to create cookies: <% Response.Cookies("firstname")="Alex" Response.Cookies("firstname").Expires="May 10,2002" %> Note: The Response.Cookies command must appear BEFORE the <html> tag! The "Request.Cookies" command is used to retrieve a cookie value: <% fname=Request.Cookies("firstname") response.write("Firstname=" & fname) %>

Including Files

You can insert the content of one ASP file into another ASP file before the server executes it, with the #include directive. The #include directive is used to create functions, headers, footers, or elements that will be reused on multiple pages Syntax: <!--#include virtual="somefile.inc"--> or <!--#include file ="somefile.inc"--> Use the virtual keyword to indicate a path beginning with a virtual directory. If a file named "header.inc" resides in a virtual directory named /html, the following line would insert the contents of "header.inc": <!-- #include virtual ="/html/header.inc" --> Use the file keyword to indicate a relative path. A relative path begins with the directory that contains the including file. If you have a file in the html directory, and the file "header.inc" resides in html\headers, the following line would insert "header.inc" in your file: <!-- #include file ="headers\header.inc" --> Use the file keyword with the syntax (..\) to include a file from a higher-level directory.

Global.asa

The Global.asa file is an optional file that can contain declarations of objects, variables, and methods that can be accessed by every page in an ASP application. Note: The Global.asa file must be stored in the root directory of the ASP application, and each application can only have one Global.asa file. The Global.asa file can contain only the following: Application events Session events <object> declarations TypeLibrary declarations the #include directive Application and Session Events In Global.asa you can tell the application and session objects what to do when the application/session starts and what to do when the application/session ends. The code for this is placed in event handlers. Note: We do not use <% and %>, to insert scripts in the Global.asa file, we have to put the subroutines inside the HTML <script> tag: <script language="vbscript" runat="server"> sub Application_OnStart ' some code end sub sub Application_OnEnd ' some code end sub sub Session_OnStart ' some code end sub sub Session_OnEnd ' some code end sub </script> <object> Declarations It is also possible to create objects with session or application scope in Global.asa by using the <object> tag. Note: The <object> tag should be outside the <script> tag! Syntax: <object runat="server" scope="scope" id="id" {progid="progID"|classid="classID"}> ....... </object> TypeLibrary Declarations A TypeLibrary is a container for the contents of a DLL file corresponding to a COM object. By including a call to the TypeLibrary in the Global.asa file, the constants of the COM object can be accessed, and errors can be better reported by the ASP code. If your Web application relies on COM objects that have declared data types in type libraries, you can declare the type libraries in Global.asa. Syntax: <!--METADATA TYPE="TypeLib" file="filename" uuid="typelibraryuuid" version="versionnumber" lcid="localeid" -->

The Session Object

The Session object is used to store information about, or change settings for a user session. Variables stored in the Session object hold information about one single user, and are available to all pages in one application. Collections Contents - Holds every item added to the session with script commands StaticObjects - Holds every object added to the session with the <object> tag, and a given session Contents.Remove(item/index) - Deletes an item from the Contents collection Contents.RemoveAll() - Deletes every item from the Contents collection Properties CodePage - Sets the code page that will be used to display dynamic content LCID - Sets the locale identifier that will be used to display dynamic content SessionID - Returns the session id Timeout - Sets the timeout for the session Method Abandon - Kills every object in a session object

Application Object

A group of ASP files that work together to perform some purpose is called an application. The Application object in ASP is used to tie these files together. All users share one Application object. The Application object should hold information that will be used by many pages in the application (like database connection information). Collections Contents - Holds every item added to the application with script commands StaticObjects - Holds every object added to the application with the <object> tag Contents.Remove - Deletes an item from a collection Contents.RemoveAll - Deletes every item from a collection Methods Lock - Prevents a user from changing the application object properties Unlock - Allows a user to change the application object properties

The Response Object

The Response Object is used to send output to the user from the server. Collection Cookies(name) - Sets a cookie value. If the cookie does not exist, it will be created, and take the value that is specified Properties Buffer - Whether to buffer the output or not. When the output is buffered, the server will hold back the response until all of the server scripts have been processed, or until the script calls the Flush or End method. If this property is set, it should be before the <html> tag in the ASP file CacheControl - Sets whether proxy servers can cache the output or not. When set to Public, the output can be cached by a proxy server Charset(charset_name) - Sets the name of the character set (like "ISO8859-1") to the content type header ContentType - Sets the HTTP content type (like "text/html", "image/gif", "image/jpeg", "text/plain"). Default is "text/html" Expires - Sets how long a page will be cached on a browser before it expires ExpiresAbsolute - Sets a date and time when a page cached on a browser will expire IsClientConnected - Checks if the client is still connected to the server Pics(pics_label) - Adds a value to the pics label response header Status - Specifies the value of the status line Methods AddHeader(name, value) - Adds an HTML header with a specified value AppendToLog string - Adds a string to the end of the server log entry BinaryWrite(data_to_write) - Writes the given information without any character-set conversion Clear - Clears the buffered output. Use this method to handle errors. If Response.Buffer is not set to true, this method will cause a run-time error End - Stops processing the script, and return the current result Flush - Sends buffered output immediately. If Response.Buffer is not set to true, this method will cause a run-time error Redirect(url) - Redirects the user to another url Write(data_to_write) - Writes a text to the user

Request Object

When a browser asks for a page from a server, it is called a request. The Request Object is used to get information from the user. Collection ClientCertificate - Holds field values stored in the client certificate Cookies(name) - Holds cookie values Form(element_name) - Holds form (input) values. The form must use the post method QueryString(variable_name) - Holds variable values in the query string ServerVariables(server_variable) - Holds server variable values Property TotalBytes - Holds the total number of bytes the client is sending in the body of the request Method BinaryRead - Fetches the data that is sent to the server from the client as part of a post request

Server Object

The Server Object is used to access properties and methods on the server. Property ScriptTimeout - Sets how long a script can run before it is terminated Method CreateObject(type_of_object) - Creates an instance of an object Execute(path) - Executes an ASP file from inside another ASP file. After executing the called ASP file, the control is returned to the original ASP file GetLastError() - Returns an ASPError object that will describe the error that occurred HTMLEncode(string) - Applies HTML encoding to a string MapPath(path) - Maps a relative or virtual path to a physical path Transfer(path) - Sends all of the state information to another ASP file for processing. After the transfer, procedural control is not returned to the original ASP file URLEncode(string) - Applies URL encoding rules to a string Source : https://www.w3schools.com/asp/asp_quickref.asp

ADO Introduction

What you should already know

Before you continue you should have a basic understanding of the following: HTML ASP SQL If you want to study these subjects first, go to our Home page

What is ADO?

ADO is a Microsoft technology ADO stands for ActiveX Data Objects ADO is a Microsoft Active-X component ADO is automatically installed with Microsoft IIS ADO is a programming interface to access data in a database

Accessing a Database from an ASP Page

The common way to access a database from inside an ASP page is to:
    Create an ADO connection to a database Open the database connection Create an ADO recordset Open the recordset Extract the data you need from the recordset Close the recordset Close the connection

ADO Database Connection

to be established.

Create a DSN-less Database Connection

The easiest way to connect to a database is to use a DSN-less connection. A DSN-less connection can be used against any Microsoft Access database on your web site. If you have a database called "northwind.mdb" located in a web directory like "c:/webdata/", you can connect to the database with the following ASP code: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" %> Note, from the example above, that you have to specify the Microsoft Access database driver (Provider) and the physical path to the database on your computer.

Create an ODBC Database Connection

If you have an ODBC database called "northwind" you can connect to the database with the following ASP code: <% set conn=Server.CreateObject("ADODB.Connection") conn.Open "northwind" %> With an ODBC connection, you can connect to any database, on any computer in your network, as long as an ODBC connection is available.

An ODBC Connection to an MS Access Database

Here is how to create a connection to a MS Access Database:
    Open the ODBC icon in your Control Panel. Choose the System DSN tab. Click on Add in the System DSN tab. Select the Microsoft Access Driver. Click Finish. In the next screen, click Select to locate the database. Give the database a Data Source Name (DSN). Click OK.
Note that this configuration has to be done on the computer where your web site is located. If you are running Personal Web Server (PWS) or Internet Information Server (IIS) on your own computer, the instructions above will work, but if your web site is located on a remote server, you have to have physical access to that server, or ask your web host to do this for you.

The ADO Connection Object

The ADO Connection object is used to create an open connection to a data source. Through this connection, you can access and manipulate a database. View all methods and properties of the Connection object.

ADO Recordset

into a recordset.

Create an ADO Table Recordset

After an ADO Database Connection has been created, as demonstrated in the previous chapter, it is possible to create an ADO Recordset. Suppose we have a database named "Northwind", we can get access to the "Customers" table inside the database with the following lines: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=Server.CreateObject("ADODB.recordset") rs.Open "Customers", conn %>

Create an ADO SQL Recordset

We can also get access to the data in the "Customers" table using SQL: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=Server.CreateObject("ADODB.recordset") rs.Open "Select * from Customers", conn %>

Extract Data from the Recordset

After a recordset is opened, we can extract data from recordset. Suppose we have a database named "Northwind", we can get access to the "Customers" table inside the database with the following lines: <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=Server.CreateObject("ADODB.recordset") rs.Open "Select * from Customers", conn for each x in rs.fields response.write(x.name) response.write(" = ") response.write(x.value) next %>

The ADO Recordset Object

The ADO Recordset object is used to hold a set of records from a database table. View all methods and properties of the Recordset object.

ADO Display

display the data in an HTML table.

Display the Field Names and Field Values

We have a database named "Northwind" and we want to display the data from the "Customers" table (remember to save the file with an .asp extension):

Example

<html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs = Server.CreateObject("ADODB.recordset") rs.Open "SELECT * FROM Customers", conn do until rs.EOF for each x in rs.Fields Response.Write(x.name) Response.Write(" = ") Response.Write(x.value & "<br>") next Response.Write("<br>") rs.MoveNext loop rs.close conn.close %> </body> </html> Show example

Display the Field Names and Field Values in an HTML Table

We can also display the data from the "Customers" table inside an HTML table with the following lines (remember to save the file with an .asp extension):

Example

<html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs = Server.CreateObject("ADODB.recordset") rs.Open "SELECT Companyname, Contactname FROM Customers", conn %> <table border="1" width="100%"> <%do until rs.EOF%> <tr> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close %> </table> </body> </html> Show example

Add Headers to the HTML Table

We want to add headers to the HTML table to make it more readable (remember to save the file with an .asp extension):

Example

<html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs = Server.CreateObject("ADODB.recordset") sql="SELECT Companyname, Contactname FROM Customers" rs.Open sql, conn %> <table border="1" width="100%"> <tr> <%for each x in rs.Fields response.write("<th>" & x.name & "</th>") next%> </tr> <%do until rs.EOF%> <tr> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close %> </table> </body> </html> Show example

More Examples

Add colors to the HTML table How to add colors to the HTML table to make it look nice.

ADO Queries

only a selected set of records and fields to view.

Display Selected Data

We want to display only the records from the "Customers" table that have a "Companyname" that starts with an A (remember to save the file with an .asp extension):

Example

<html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=Server.CreateObject("ADODB.recordset") sql="SELECT Companyname, Contactname FROM Customers WHERE CompanyName LIKE 'A%'" rs.Open sql, conn %> <table border="1" width="100%"> <tr> <%for each x in rs.Fields response.write("<th>" & x.name & "</th>") next%> </tr> <%do until rs.EOF%> <tr> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close%> </table> </body> </html> Show example

More Examples

Display records where "Companyname" is > E How to display only the records from the "Customers" table that have a "Companyname" that is larger than E. Display only Spanish customers How to display only the Spanish customers from the "Customers" table. Let the user choose filter Let the user choose which country to show customers from.

ADO Sort

set.

Sort the Data

We want to display the "Companyname" and "Contactname" fields from the "Customers" table, ordered by "Companyname" (remember to save the file with an .asp extension):

Example

<html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs = Server.CreateObject("ADODB.recordset") sql="SELECT Companyname, Contactname FROM Customers ORDER BY CompanyName" rs.Open sql, conn %> <table border="1" width="100%"> <tr> <%for each x in rs.Fields response.write("<th>" & x.name & "</th>") next%> </tr> <%do until rs.EOF%> <tr> <%for each x in rs.Fields%> <td><%Response.Write(x.value)%></td> <%next rs.MoveNext%> </tr> <%loop rs.close conn.close%> </table> </body> </html> Show example

More Examples

Sort the records on a specified fieldname descending How to sort the data on a specified fieldname. Let the user choose what column to sort on Let the user choose what column to sort on.

ADO Add Records

table in a database.

Add a Record to a Table in a Database

We want to add a new record to the Customers table in the Northwind database. We first create a form that contains the fields we want to collect data from: <html> <body> <form method="post" action="demo_add.asp"> <table> <tr> <td>CustomerID:</td> <td><input name="custid"></td> </tr><tr> <td>Company Name:</td> <td><input name="compname"></td> </tr><tr> <td>Contact Name:</td> <td><input name="contname"></td> </tr><tr> <td>Address:</td> <td><input name="address"></td> </tr><tr> <td>City:</td> <td><input name="city"></td> </tr><tr> <td>Postal Code:</td> <td><input name="postcode"></td> </tr><tr> <td>Country:</td> <td><input name="country"></td> </tr> </table> <br><br> <input type="submit" value="Add New"> <input type="reset" value="Cancel"> </form> </body> </html> When the user presses the submit button the form is sent to a file called "demo_add.asp". The "demo_add.asp" file contains the code that will add a new record to the Customers table: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" sql="INSERT INTO customers (customerID,companyname," sql=sql & "contactname,address,city,postalcode,country)" sql=sql & " VALUES " sql=sql & "('" & Request.Form("custid") & "'," sql=sql & "'" & Request.Form("compname") & "'," sql=sql & "'" & Request.Form("contname") & "'," sql=sql & "'" & Request.Form("address") & "'," sql=sql & "'" & Request.Form("city") & "'," sql=sql & "'" & Request.Form("postcode") & "'," sql=sql & "'" & Request.Form("country") & "')" on error resume next conn.Execute sql,recaffected if err<>0 then Response.Write("No update permissions!") else Response.Write("<h3>" & recaffected & " record added</h3>") end if conn.close %> </body> </html>

Important

If you use the SQL INSERT command be aware of the following: If the table contains a primary key, make sure to append a unique, non-Null value to the primary key field (if not, the provider may not append the record, or an error occurs) If the table contains an AutoNumber field, do not include this field in the SQL INSERT command (the value of this field will be taken care of automatically by the provider)

What about Fields With no Data?

In a MS Access database, you can enter zero-length strings ("") in Text, Hyperlink, and Memo fields IF you set the AllowZeroLength property to Yes. Note: Not all databases support zero-length strings and may cause an error when a record with blank fields is added. It is important to check what data types your database supports.

ADO Update Records

table in a database.

Update a Record in a Table

We want to update a record in the Customers table in the Northwind database. We first create a table that lists all records in the Customers table: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM customers",conn %> <h2>List Database</h2> <table border="1" width="100%"> <tr> <% for each x in rs.Fields response.write("<th>" & ucase(x.name) & "</th>") next %> </tr> <% do until rs.EOF %> <tr> <form method="post" action="demo_update.asp"> <% for each x in rs.Fields if lcase(x.name)="customerid" then%> <td> <input type="submit" name="customerID" value="<%=x.value%>"> </td> <%else%> <td><%Response.Write(x.value)%></td> <%end if next %> </form> <%rs.MoveNext%> </tr> <% loop conn.close %> </table> </body> </html> If the user clicks on the button in the "customerID" column he or she will be taken to a new file called "demo_update.asp". The "demo_update.asp" file contains the source code on how to create input fields based on the fields from one record in the database table. It also contains a "Update record" button that will save your changes: <html> <body> <h2>Update Record</h2> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" cid=Request.Form("customerID") if Request.form("companyname")="" then set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM customers WHERE customerID='" & cid & "'",conn %> <form method="post" action="demo_update.asp"> <table> <%for each x in rs.Fields%> <tr> <td><%=x.name%></td> <td><input name="<%=x.name%>" value="<%=x.value%>"></td> <%next%> </tr> </table> <br><br> <input type="submit" value="Update record"> </form> <% else sql="UPDATE customers SET " sql=sql & "companyname='" & Request.Form("companyname") & "'," sql=sql & "contactname='" & Request.Form("contactname") & "'," sql=sql & "address='" & Request.Form("address") & "'," sql=sql & "city='" & Request.Form("city") & "'," sql=sql & "postalcode='" & Request.Form("postalcode") & "'," sql=sql & "country='" & Request.Form("country") & "'" sql=sql & " WHERE customerID='" & cid & "'" on error resume next conn.Execute sql if err<>0 then response.write("No update permissions!") else response.write("Record " & cid & " was updated!") end if end if conn.close %> </body> </html>

ADO Delete Records

table in a database.

Delete a Record in a Table

We want to delete a record in the Customers table in the Northwind database. We first create a table that lists all records in the Customers table: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM customers",conn %> <h2>List Database</h2> <table border="1" width="100%"> <tr> <% for each x in rs.Fields response.write("<th>" & ucase(x.name) & "</th>") next %> </tr> <% do until rs.EOF %> <tr> <form method="post" action="demo_delete.asp"> <% for each x in rs.Fields if x.name="customerID" then%> <td> <input type="submit" name="customerID" value="<%=x.value%>"> </td> <%else%> <td><%Response.Write(x.value)%></td> <%end if next %> </form> <%rs.MoveNext%> </tr> <% loop conn.close %> </table> </body> </html> If the user clicks on the button in the "customerID" column he or she will be taken to a new file called "demo_delete.asp". The "demo_delete.asp" file contains the source code on how to create input fields based on the fields from one record in the database table. It also contains a "Delete record" button that will delete the current record: <html> <body> <h2>Delete Record</h2> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" cid=Request.Form("customerID") if Request.form("companyname")="" then set rs=Server.CreateObject("ADODB.Recordset") rs.open "SELECT * FROM customers WHERE customerID='" & cid & "'",conn %> <form method="post" action="demo_delete.asp"> <table> <%for each x in rs.Fields%> <tr> <td><%=x.name%></td> <td><input name="<%=x.name%>" value="<%=x.value%>"></td> <%next%> </tr> </table> <br><br> <input type="submit" value="Delete record"> </form> <% else sql="DELETE FROM customers" sql=sql & " WHERE customerID='" & cid & "'" on error resume next conn.Execute sql if err<>0 then response.write("No update permissions!") else response.write("Record " & cid & " was deleted!") end if end if conn.close %> </body> </html>

ADO Demonstration

ADO demos.

Read this First

If you try to update the database, you will get the error message: "You do not have permission to update this database". You get this error because you don't have write access to our server. BUT, if you copy the code and run it on your own system, you might get the same error. That is because the system might see you as an anonymous internet user when you access the file via your browser. In that case, you have to change the access-rights to get access to the file.

How to change the access-rights of your Access database?

Open Windows Explorer, find the .mdb file. Right-click on the .mdb file and select Properties. Go to the Security tab and set the access-rights here.

List, Edit, Update, and Delete Database Records

List, edit, update, and delete database records

Add a New Record to a Database

Add a new record

ADO Speed Up With GetString()

of using multiple Response.Write's).

Multiple Response.Write's

The following example demonstrates one way of how to display a database query in an HTML table: <html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs = Server.CreateObject("ADODB.recordset") rs.Open "SELECT Companyname, Contactname FROM Customers", conn %> <table border="1" width="100%"> <%do until rs.EOF%> <tr> <td><%Response.Write(rs.fields("Companyname"))%></td> <td><%Response.Write(rs.fields("Contactname"))%></td> </tr> <%rs.MoveNext loop%> </table> <% rs.close conn.close set rs = Nothing set conn = Nothing %> </body> </html> For a large query, this can slow down the script processing time, since many Response.Write commands must be processed by the server. The solution is to have the entire string created, from <table> to </table>, and then output it - using Response.Write just once.

The GetString() Method

The GetString() method allows you to display the string with only one Response.Write. It also eliminates the do...loop code and the conditional test that checks if the recordset is at EOF.

Syntax

str = rs.GetString(format,rows,coldel,rowdel,nullexpr) To create an HTML table with data from a recordset, we only need to use three of the parameters above (all parameters are optional): coldel - the HTML to use as a column-separator rowdel - the HTML to use as a row-separator nullexpr - the HTML to use if a column is NULL Note: The GetString() method is an ADO 2.0 feature. You can download ADO 2.0 at https://www.microsoft.com/data/download.htm. In the following example we will use the GetString() method to hold the recordset as a string:

Example

<html> <body> <% set conn=Server.CreateObject("ADODB.Connection") conn.Provider="Microsoft.Jet.OLEDB.4.0" conn.Open "c:/webdata/northwind.mdb" set rs = Server.CreateObject("ADODB.recordset") rs.Open "SELECT Companyname, Contactname FROM Customers", conn str=rs.GetString(,,"</td><td>","</td></tr><tr><td>","&nbsp;") %> <table border="1" width="100%"> <tr> <td><%Response.Write(str)%></td> </tr> </table> <% rs.close conn.close set rs = Nothing set conn = Nothing %> </body> </html> Show example The str variable above contains a string of all the columns and rows returned by the SQL SELECT statement. Between each column the HTML </td><td> will appear, and between each row, the HTML </td></tr><tr><td> will appear. This will produce the exact HTML we need with only one Response.Write.

ADO Command Object

The ADO Command object is used to execute a single query against a database. The query can perform actions like creating, adding, retrieving, deleting or updating records. If the query is used to retrieve data, the data will be returned as a RecordSet object. This means that the retrieved data can be manipulated by properties, collections, methods, and events of the Recordset object. The major feature of the Command object is the ability to use stored queries and procedures with parameters.

ProgID

set objCommand=Server.CreateObject("ADODB.command")

Properties

PropertyDescription
ActiveConnectionSets or returns a definition for a connection if the connection is closed, or the current Connection object if the connection is open
CommandTextSets or returns a provider command
CommandTimeoutSets or returns the number of seconds to wait while attempting to execute a command
CommandTypeSets or returns the type of a Command object
NameSets or returns the name of a Command object
PreparedSets or returns a Boolean value that, if set to True, indicates that the command should save a prepared version of the query before the first execution
StateReturns a value that describes if the Command object is open, closed, connecting, executing or retrieving data

Methods

MethodDescription
CancelCancels an execution of a method
CreateParameterCreates a new Parameter object
ExecuteExecutes the query, SQL statement or procedure in the CommandText property

Collections

CollectionDescription
ParametersContains all the Parameter objects of a Command Object
PropertiesContains all the Property objects of a Command Object

ADO Connection Object

The ADO Connection Object is used to create an open connection to a data source. Through this connection, you can access and manipulate a database. If you want to access a database multiple times, you should establish a connection using the Connection object. You can also make a connection to a database by passing a connection string via a Command or Recordset object. However, this type of connection is only good for one specific, single query.

ProgID

set objConnection=Server.CreateObject("ADODB.connection")

Properties

PropertyDescription
AttributesSets or returns the attributes of a Connection object
CommandTimeoutSets or returns the number of seconds to wait while attempting to execute a command
ConnectionStringSets or returns the details used to create a connection to a data source
ConnectionTimeoutSets or returns the number of seconds to wait for a connection to open
CursorLocationSets or returns the location of the cursor service
DefaultDatabaseSets or returns the default database name
IsolationLevelSets or returns the isolation level
ModeSets or returns the provider access permission
ProviderSets or returns the provider name
StateReturns a value describing if the connection is open or closed
VersionReturns the ADO version number

Methods

MethodDescription
BeginTransBegins a new transaction
CancelCancels an execution
CloseCloses a connection
CommitTransSaves any changes and ends the current transaction
ExecuteExecutes a query, statement, procedure or provider specific text
OpenOpens a connection
OpenSchemaReturns schema information from the provider about the data source
RollbackTransCancels any changes in the current transaction and ends the transaction

Events

Note: You cannot handle events using VBScript or JScript (only Visual Basic, Visual C++, and Visual J++ languages can handle events).
EventDescription
BeginTransCompleteTriggered after the BeginTrans operation
CommitTransCompleteTriggered after the CommitTrans operation
ConnectComplete Triggered after a connection starts
Disconnect Triggered after a connection ends
ExecuteComplete Triggered after a command has finished executing
InfoMessage Triggered if a warning occurs during a ConnectionEvent operation
RollbackTransComplete Triggered after the RollbackTrans operation
WillConnectTriggered before a connection starts
WillExecuteTriggered before a command is executed

Collections

CollectionDescription
ErrorsContains all the Error objects of the Connection object
PropertiesContains all the Property objects of the Connection object

ADO Error Object

The ADO Error object contains details about data access errors that have been generated during a single operation. ADO generates one Error object for each error. Each Error object contains details of the specific error, and are stored in the Errors collection. To access the errors, you must refer to a specific connection. To loop through the Errors collection: <% for each objErr in objConn.Errors response.write("<p>") response.write("Description: ") response.write(objErr.Description & "<br>") response.write("Help context: ") response.write(objErr.HelpContext & "<br>") response.write("Help file: ") response.write(objErr.HelpFile & "<br>") response.write("Native error: ") response.write(objErr.NativeError & "<br>") response.write("Error number: ") response.write(objErr.Number & "<br>") response.write("Error source: ") response.write(objErr.Source & "<br>") response.write("SQL state: ") response.write(objErr.SQLState & "<br>") response.write("</p>") next %>

Syntax

objErr.property

Properties

PropertyDescription
DescriptionReturns an error description
HelpContextReturns the context ID of a topic in the Microsoft Windows help system
HelpFileReturns the full path of the help file in the Microsoft Windows help system
NativeErrorReturns an error code from the provider or the data source
NumberReturns a unique number that identifies the error
SourceReturns the name of the object or application that generated the error
SQLStateReturns a 5-character SQL error code

ADO Field Object

The ADO Field object contains information about a column in a Recordset object. There is one Field object for each column in the Recordset.

ProgID

set objField=Server.CreateObject("ADODB.field")

Properties

PropertyDescription
ActualSizeReturns the actual length of a field's value
AttributesSets or returns the attributes of a Field object
DefinedSizeReturns the defined size of a field
NameSets or returns the name of a Field object
NumericScaleSets or returns the number of decimal places allowed for numeric values in a Field object
OriginalValueReturns the original value of a field
PrecisionSets or returns the maximum number of digits allowed when representing numeric values in a Field object
StatusReturns the status of a Field object
TypeSets or returns the type of a Field object
UnderlyingValueReturns the current value of a field
ValueSets or returns the value of a Field object

Methods

MethodDescription
AppendChunkAppends long binary or character data to a Field object
GetChunkReturns all or a part of the contents of a large text or binary data Field object

Collections

Collection Description
Properties Contains all the Property objects for a Field object

ADO Parameter Object

The ADO Parameter object provides information about a single parameter used in a stored procedure or query. A Parameter object is added to the Parameters Collection when it is created. The Parameters Collection is associated with a specific Command object, which uses the Collection to pass parameters in and out of stored procedures and queries. Parameters can be used to create Parameterized Commands. These commands are (after they have been defined and stored) using parameters to alter some details of the command before it is executed. For example, an SQL SELECT statement could use a parameter to define the criteria of a WHERE clause. There are four types of parameters: input parameters, output parameters, input/output parameters and return parameters.

Syntax

objectname.property objectname.method

Properties

PropertyDescription
AttributesSets or returns the attributes of a Parameter object
DirectionSets or returns how a parameter is passed to or from a procedure
NameSets or returns the name of a Parameter object
NumericScaleSets or returns the number of digits stored to the right side of the decimal point for a numeric value of a Parameter object
PrecisionSets or returns the maximum number of digits allowed when representing numeric values in a Parameter
SizeSets or returns the maximum size in bytes or characters of a value in a Parameter object
TypeSets or returns the type of a Parameter object
ValueSets or returns the value of a Parameter object

Methods

MethodDescription
AppendChunkAppends long binary or character data to a Parameter object
DeleteDeletes an object from the Parameters Collection

ADO Property Object

The ADO Property object represents a dynamic characteristic of an ADO object that is defined by the provider. Each provider that talks with ADO has different ways of interacting with ADO. Therefore, ADO needs to store information about the provider in some way. The solution is that the provider gives specific information (dynamic properties) to ADO. ADO stores each provider property in a Property object that is again stored in the Properties Collection. The Collection is assigned to either a Command object, Connection object, Field object, or a Recordset object.

ProgID

set objProperty=Server.CreateObject("ADODB.property")

Properties

PropertyDescription
AttributesReturns the attributes of a Property object
NameSets or returns the name of a Property object
TypeReturns the type of a Property object
ValueSets or returns the value of a Property object

ADO Record Object

The ADO Record object is used to hold a row in a Recordset, a directory, or a file from a file system. Only structured databases could be accessed by ADO in versions prior 2.5. In a structured database, each table has the exact same number of columns in each row, and each column is composed of the same data type. The Record object allows access to data-sets where the number of columns and/or the data type can be different from row to row.

Syntax

objectname.property objectname.method

Properties

PropertyDescription
ActiveConnectionSets or returns which Connection object a Record object belongs to
ModeSets or returns the permission for modifying data in a Record object
ParentURLReturns the absolute URL of the parent Record
RecordTypeReturns the type of a Record object
SourceSets or returns the src parameter of the Open method of a Record object
StateReturns the status of a Record object

Methods

MethodDescription
CancelCancels an execution of a CopyRecord, DeleteRecord, MoveRecord, or Open call
CloseCloses a Record object
CopyRecordCopies a file or directory to another location
DeleteRecordDeletes a file or directory
GetChildren Returns a Recordset object where each row represents the files in the directory
MoveRecordMoves a file or a directory to another location
OpenOpens an existing Record object or creates a new file or directory

Collections

CollectionDescription
PropertiesA collection of provider-specific properties
FieldsContains all the Field objects in the Record object

The Fields Collection's Properties

PropertyDescription
CountReturns the number of items in the fields collection. Starts at zero. Example: countfields=rec.Fields.Count
Item(named_item/number)Returns a specified item in the fields collection. Example: itemfields=rec.Fields.Item(1) or itemfields = rec.Fields.Item("Name")

ADO Recordset Object

GetRows This example demonstrates how to use the GetRows method.

Recordset Object

The ADO Recordset object is used to hold a set of records from a database table. A Recordset object consist of records and columns (fields). In ADO, this object is the most important and the one used most often to manipulate data from a database.

ProgID

set objRecordset=Server.CreateObject("ADODB.recordset") When you first open a Recordset, the current record pointer will point to the first record and the BOF and EOF properties are False. If there are no records, the BOF and EOF property are True. Recordset objects can support two types of updating: Immediate updating - all changes are written immediately to the database once you call the Update method. Batch updating - the provider will cache multiple changes and then send them to the database with the UpdateBatch method. In ADO there are 4 different cursor types defined: Dynamic cursor - Allows you to see additions, changes, and deletions by other users. Keyset cursor - Like a dynamic cursor, except that you cannot see additions by other users, and it prevents access to records that other users have deleted. Data changes by other users will still be visible. Static cursor - Provides a static copy of a recordset for you to use to find data or generate reports. Additions, changes, or deletions by other users will not be visible. This is the only type of cursor allowed when you open a client-side Recordset object. Forward-only cursor - Allows you to only scroll forward through the Recordset. Additions, changes, or deletions by other users will not be visible. The cursor type can be set by the CursorType property or by the CursorType parameter in the Open method. Note: Not all providers support all methods or properties of the Recordset object.

Properties

Property Description
AbsolutePageSets or returns a value that specifies the page number in the Recordset object
AbsolutePositionSets or returns a value that specifies the ordinal position of the current record in the Recordset object
ActiveCommandReturns the Command object associated with the Recordset
ActiveConnectionSets or returns a definition for a connection if the connection is closed, or the current Connection object if the connection is open
BOFReturns true if the current record position is before the first record, otherwise false
BookmarkSets or returns a bookmark. The bookmark saves the position of the current record
CacheSizeSets or returns the number of records that can be cached
CursorLocationSets or returns the location of the cursor service
CursorTypeSets or returns the cursor type of a Recordset object
DataMemberSets or returns the name of the data member that will be retrieved from the object referenced by the DataSource property
DataSourceSpecifies an object containing data to be represented as a Recordset object
EditModeReturns the editing status of the current record
EOFReturns true if the current record position is after the last record, otherwise false
FilterSets or returns a filter for the data in a Recordset object
IndexSets or returns the name of the current index for a Recordset object
LockTypeSets or returns a value that specifies the type of locking when editing a record in a Recordset
MarshalOptionsSets or returns a value that specifies which records are to be returned to the server
MaxRecordsSets or returns the maximum number of records to return to a Recordset object from a query
PageCountReturns the number of pages with data in a Recordset object
PageSizeSets or returns the maximum number of records allowed on a single page of a Recordset object
RecordCountReturns the number of records in a Recordset object
SortSets or returns the field names in the Recordset to sort on
SourceSets a string value or a Command object reference, or returns a String value that indicates the data source of the Recordset object
StateReturns a value that describes if the Recordset object is open, closed, connecting, executing or retrieving data
StatusReturns the status of the current record with regard to batch updates or other bulk operations
StayInSyncSets or returns whether the reference to the child records will change when the parent record position changes

Methods

MethodDescription
AddNewCreates a new record
CancelCancels an execution
CancelBatchCancels a batch update
CancelUpdate Cancels changes made to a record of a Recordset object
CloneCreates a duplicate of an existing Recordset
CloseCloses a Recordset
CompareBookmarksCompares two bookmarks
DeleteDeletes a record or a group of records
FindSearches for a record in a Recordset that satisfies a specified criteria
GetRowsCopies multiple records from a Recordset object into a two-dimensional array
GetStringReturns a Recordset as a string
MoveMoves the record pointer in a Recordset object
MoveFirstMoves the record pointer to the first record
MoveLastMoves the record pointer to the last record
MoveNextMoves the record pointer to the next record
MovePreviousMoves the record pointer to the previous record
NextRecordsetClears the current Recordset object and returns the next Recordset object by looping through a series of commands
Open Opens a database element that gives you access to records in a table, the results of a query, or to a saved Recordset
RequeryUpdates the data in a Recordset by re-executing the query that made the original Recordset
ResyncRefreshes the data in the current Recordset from the original database
SaveSaves a Recordset object to a file or a Stream object
SeekSearches the index of a Recordset to find a record that matches the specified values
SupportsReturns a boolean value that defines whether or not a Recordset object supports a specific type of functionality
UpdateSaves all changes made to a single record in a Recordset object
UpdateBatch Saves all changes in a Recordset to the database. Used when working in batch update mode

Events

Note: You cannot handle events using VBScript or JScript (only Visual Basic, Visual C++, and Visual J++ languages can handle events).
EventDescription
EndOfRecordsetTriggered when you try to move to a record after the last record
FetchCompleteTriggered after all records in an asynchronous operation have been fetched
FetchProgressTriggered periodically in an asynchronous operation, to state how many more records that have been fetched
FieldChangeCompleteTriggered after the value of a Field object change
MoveCompleteTriggered after the current position in the Recordset has changed
RecordChangeCompleteTriggered after a record has changed
RecordsetChangeCompleteTriggered after the Recordset has changed
WillChangeFieldTriggered before the value of a Field object change
WillChangeRecordTriggered before a record change
WillChangeRecordsetTriggered before a Recordset change
WillMoveTriggered before the current position in the Recordset changes

Collections

CollectionDescription
FieldsIndicates the number of Field objects in the Recordset object
PropertiesContains all the Property objects in the Recordset object

The Fields Collection's Properties

PropertyDescription
CountReturns the number of items in the fields collection. Starts at zero. Example: countfields=rs.Fields.Count
Item(named_item/number)Returns a specified item in the fields collection. Example: itemfields=rs.Fields.Item(1) or itemfields=rs.Fields.Item("Name")

The Properties Collection's Properties

PropertyDescription
CountReturns the number of items in the properties collection. Starts at zero. Example: countprop=rs.Properties.Count
Item(named_item/number)Returns a specified item in the properties collection. Example: itemprop = rs.Properties.Item(1) or itemprop=rs.Properties.Item("Name")

ADO Stream Object

The ADO Stream Object is used to read, write, and manage a stream of binary data or text. A Stream object can be obtained in three ways: From a URL pointing to a document, a folder, or a Record object By instantiating a Stream object to store data for your application By opening the default Stream object associated with a Record object

Syntax

objectname.property objectname.method

Properties

PropertyDescription
CharSetSets or returns a value that specifies into which character set the contents are to be translated. This property is only used with text Stream objects (type is adTypeText)
EOSReturns whether the current position is at the end of the stream or not
LineSeparatorSets or returns the line separator character used in a text Stream object
ModeSets or returns the available permissions for modifying data
PositionSets or returns the current position (in bytes) from the beginning of a Stream object
SizeReturns the size of an open Stream object
StateReturns a value describing if the Stream object is open or closed
TypeSets or returns the type of data in a Stream object

Methods

MethodDescription
CancelCancels an execution of an Open call on a Stream object
CloseCloses a Stream object
CopyToCopies a specified number of characters/bytes from one Stream object into another Stream object
FlushSends the contents of the Stream buffer to the associated underlying object
LoadFromFile Loads the contents of a file into a Stream object
OpenOpens a Stream object
ReadReads the entire stream or a specified number of bytes from a binary Stream object
ReadText Reads the entire stream, a line, or a specified number of characters from a text Stream object
SaveToFile Saves the binary contents of a Stream object to a file
SetEOS Sets the current position to be the end of the stream (EOS)
SkipLineSkips a line when reading a text Stream
WriteWrites binary data to a binary Stream object
WriteTextWrites character data to a text Stream object

ADO Data Types

DataType Enum Value Access SQLServer Oracle
adBigInt20 BigInt (SQL Server 2000 +)
adBinary128 Binary TimeStampRaw *
adBoolean11YesNoBit
adChar129 CharChar
adCurrency6CurrencyMoney SmallMoney
adDate7DateDateTime
adDBTimeStamp135DateTime (Access 97 (ODBC))DateTime SmallDateTimeDate
adDecimal14 Decimal *
adDouble5DoubleFloatFloat
adGUID72ReplicationID (Access 97 (OLEDB)), (Access 2000 (OLEDB))UniqueIdentifier (SQL Server 7.0 +)
adIDispatch9
adInteger3AutoNumber Integer LongIdentity (SQL Server 6.5) Int Int *
adLongVarBinary205OLEObjectImageLong Raw * Blob (Oracle 8.1.x)
adLongVarChar201Memo (Access 97) Hyperlink (Access 97)TextLong * Clob (Oracle 8.1.x)
adLongVarWChar203Memo (Access 2000 (OLEDB)) Hyperlink (Access 2000 (OLEDB))NText (SQL Server 7.0 +)NClob (Oracle 8.1.x)
adNumeric131Decimal (Access 2000 (OLEDB))Decimal NumericDecimal Integer Number SmallInt
adSingle4SingleReal
adSmallInt2IntegerSmallInt
adUnsignedTinyInt17ByteTinyInt
adVarBinary204ReplicationID (Access 97)VarBinary
adVarChar200Text (Access 97)VarCharVarChar
adVariant12 Sql_Variant (SQL Server 2000 +)VarChar2
adVarWChar202Text (Access 2000 (OLEDB))NVarChar (SQL Server 7.0 +)NVarChar2
adWChar130 NChar (SQL Server 7.0 +)
* In Oracle 8.0.x - decimal and int are equal to number and number(10).