Web Forms and ASP.NET
Download
Report
Transcript Web Forms and ASP.NET
Object Oriented Programming
Web forms, web controls
and ASP.NET
Dr. Mike Spann
[email protected]
Contents
Introduction
Static and dynamic web pages
How ASP.NET works
Introduction to web form programming
Visual Web Developer
Validation controls
Summary
Static and dynamic web pages
We are all familiar with the concept of
clients and web servers
Clients issue requests (using the http
protocol) to web servers for web pages
The server responds with a message packet
containing html which is the encoded web
page
The web browser program running on the
client parses the html and displays the web
page
Static and dynamic web pages
Server
Client
http response plus
html document
http GET request
Internet
Static and dynamic web pages
Static web pages appear the same in response to
every request from the client to server
This is typical of simple html web pages
Dynamic pages can change depending on data
supplied from the client or be personalised for the
user based on cookies which are installed on the
client computer
There are many technologies which support this
of which ASP.NET is a powerful Microsoft
example
Essentially it involves running asp scripts
supported by code written in a high level
language (typically VB or C#) on the server on
which .NET has been installed
Static and dynamic web pages
For example, we can create a static web
page to display times of movies as a cinema
www.eee.bham.ac.uk/spannm/MovieSite.
html
The problem with this is that the
information cannot be updated without
altering the html code
html consists of tags followed by text
The text is interpreted according to the
enclosing tags by the web browser
Static and dynamic web pages
<html>
<body background="James Bond1.jpg">
<TITLE>Movie Magic Cinema</TITLE>
<H1 align="center">
<FONT color="blue" size="7">
Welcome to a James Bond evening
</FONT>
</H1>
<P align="left">
<FONT color="lime" size="5">
<STRONG>
<U>Showtimes for Wed 10/31</U>
</STRONG>
</FONT>
</P>
<FONT size="5" color="yellow">
<P>The Man With The Golden Gun 1:05 pm, 3:25 pm, 7:00 pm</P>
<P>Diamonds Are Forever 12:50 pm, 3:25 pm, 6:55 pm</P>
<P>The World Is Not Enough 3:30 pm, 8:35 pm</P>
<P>From Russia With Love 12:45 pm, 6:45 pm</P>
</FONT>
</body>
</html>
Static and dynamic web pages
We can modify our static web page to include some
dynamic content
It will display the current date/time along with the
movie schedule
We will use ASP.NET to run server side code
• http://www.eee.bham.ac.uk/spannm/ASP Net
stuff/MovieSite/MovieSite.aspx
The site will be an .aspx file which will look similar to our
original .html file
It will call methods from a C# class which is in a code
behind file
We will explain later how this all fits together
Static and dynamic web pages
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="MoviePage" %>
CodeFile="MovieSite.aspx.cs"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Movie Magic Cinema</title>
</head>
<body background="James Bond1.jpg">
<form id="form1" runat="server">
<div>
<h1 align="center">
<font color="blue" size="7">
Welcome to a James Bond evening
</font>
</h1>
<p align="left">
<font color="lime" size="5">
<strong>
<U>Showtimes for <%WriteDate();%></U>
</strong>
</font>
</p>
<font size="5" color="yellow">
<%WriteMovies();%>
</font>
</div>
</form>
</body>
</html>
Static and dynamic web pages
using
using
using
using
using
using
using
using
using
System;
System.Data;
System.Configuration;
System.Web;
System.Web.Security;
System.Web.UI;
System.Web.UI.WebControls;
System.Web.UI.WebControls.WebParts;
System.Web.UI.HtmlControls;
public partial class MoviePage : System.Web.UI.Page
{
protected void WriteDate()
{
this.Response.Write(DateTime.Now.ToString());
}
protected void WriteMovies()
{
this.Response.Write(
"<P>The Man With The Golden Gun 1:05 pm, 3:25 pm, 7:00 pm pm</P>");
this.Response.Write(
"<P>Diamonds Are Forever 12:50 pm, 3:25 pm, 6:55 pm</P>");
this.Response.Write(
"<P>The World Is Not Enough 3:30 pm, 8:35 pm</P>");
this.Response.Write(
"<P>From Russia With Love 12:45 pm, 6:45 pm</P>");
}
}
How ASP.NET works
To create a dynamic web page, we create an .aspx
file
If the client requests an .aspx file, because of
the file extension, the file is forwarded to
ASP.NET by the web server
ASP.NET parses the .aspx file
It understands .html tags as well as ASP tags
(<% and %>)
Ultimately ASP.NET will create an object,
using the code in the .aspx file and the
codebehind (C#) file which produces the .html
to send back to the client
How ASP.NET works
Web server
Page derived
managed object
.aspx file
ASP.NET
.cs file
How ASP.NET works
Web server
Page derived
managed object
html
html
ASP.NET
To client
How ASP.NET works
From the 2 files, ASP.NET produces code for 2 files
The class is derived from the System.Web.UI.Page class
(which contains basic functionality to produce html)
Also System.Web.UI.Page contains functionality to
parse the request from the client including attached
postback data
ASP.NET creates an instance of this object to
represent the page
How ASP.NET works
The real power of ASP.NET is that the production
of html is abstracted away to managed
components
For example, a button on a web form knows
how to produce the html to render itself on the
web page
All these components exist in the namespace
System.Web.UI.WebControls
It’s state may depend on postback data from the
client so the component may need to re-render
itself in response
How ASP.NET works
Browser client
Browser
- Client
Internet
Web server
Managed code
Browser request
and postback
data
ASP.NET
Page derived
and custom
objects
html
How ASP.NET works
In our simple example, code for a derived class of the
MoviePage class is produced
An object is instantiated containing code for
method calls to WriteDate() and WriteMovies()
More realistically our page will contain web controls
which represent user interface elements on our web
page
These are defined in the FCL
We can design a web page using visual
programming techniques to drag and drop these
controls into our page
We don’t have to worry about producing the right
html to send back to our browser
How ASP.NET works
Another key feature of ASP.NET is its runtime
performance
ASP.NET parses the .aspx files at runtime
Code is compiled into binary assemblies (.dll
files) which are cached and reused
A web form application must only be parsed
once after each modification to source files
On receiving a request from the client,
ASP.NET looks for an already compiled
assembly to fulfil the request otherwise it
creates one from the submitted .aspx file and
code-behind file
Introduction to web form
programming
Web form programming allows us to insert web
controls (for example buttons, labels, images etc)
into web pages
We can do this programmatically in the .aspx and
codebehind files
Or we can do this using the design view in Visual
Studio
It allows us to design interactive webpages whose
visual representation changes in response to user
interaction
Introduction to web form
programming
Control
AdRotator
Button
Calendar
CheckBox
DataGrid
Description
Implements a rotating banner add.
Implements a button for web user interface.
Implements a highly configurable calendar UI.
Implements a check box for web UI.
Implements a table that supports automatic binding to data sources.
HyperLink
Image
Label
LinkButton
ListControl
Panel
Implements a dynamic hyperlink.
Implements an image for inclusion in web UI.
Implements a dynamic label or text output.
Implements a hyperlink style button.
Implements a list box for web UI.
A virtual control that is a collection of controls. This control is useful for
treating a block of controls as a single entity. For example, it is easy to
create a Panel to cause blocks of controls to appear or disappear from
the rendered HTML.
Implements a simple table with custom rows and cells.
Implements an editable text box for web UI.
Implements a validator that assures that an entry in another control on the
page falls within a given range. Validator controls automatically generate
client-side script to perform validation for browsers that support JScript.
Whether or not validation is performed on the client side, validation is also
performed on the server side by the control.
Implements a validator that assures that an entry was made to a field.
Table
TextBox
RangeValidator
RequiredFieldValidator
Introduction to web form
programming
As a simple example, the following website
allows the month’s calendar to be displayed
for any user inputted date
It demonstrates the use of the button,
label, textbox and calendar web controls
http://www.eee.bham.ac.uk/spannm/Web
Controls.aspx
Introduction to web form
programming
<%@ Page Language="C#" AutoEventWireup="true"
Inherits="DatePage" %>
CodeFile="WebControls.aspx.cs"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Demonstrating simple web controls</title>
</head>
<body bgColor="orange">
<form id="form1" runat="server">
<p align="left">
<font color="white">
Enter a Date Here<br>
<asp:TextBox id="date" runat="server"/><br>
<asp:Button id="button"
Text="Then press this button"
runat="server“/ >
</font>
</p>
<p align="left">
<asp:Calendar id="calendar" Visible="false" runat="server“/>
</p>
</form>
</body>
</html>
Introduction to web form
programming
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class DatePage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
button.Click += new EventHandler(OnButtonClicked);
}
protected void OnButtonClicked(Object sender, EventArgs args)
{
String dateString = date.Text;
try
{
DateTime enteredDate = Convert.ToDateTime(dateString);
calendar.SelectedDate = enteredDate;
calendar.VisibleDate = enteredDate;
calendar.Visible = true;
}
catch (FormatException)
{
calendar.Visible = false;
}
}
}
Introduction to web form
programming
The <asp:> tag in the .aspx file indicates that we
are defining a web control
asp: is shorthand for the
System.Web.UI.WebControls namespace
The runat=“server” attribute for each web
control indicates that these controls are to be
implemented on the server side
We are setting the properties of our web control
objects in the <asp: > but we could also use
the properties window in Visual Studio
Visual Web Developer
A sub-set of Visual Studio is the Visual
Web Developer which has a visual designer
based on Front Page
Allows the developer to use ‘drag and
drop’ to insert web controls into web
pages
Code can then easily be added to the
codebehind files
Typically this would be event handler
functions for the controls
Visual Web Developer
We select File->New->Web site and then select ASP.NET
Web Site
Normally HTTP is selected and the location (in this
case http://localhost/xxxx means under the local
‘wwwroot’ directory (assuming IIS has been installed
locally)
Visual Web Developer
Web Developer has a design mode rather similar to the
design mode we used to create GUI’s in normal windows
programming
It differs slightly in that there is a cursor position and any
web controls or text are added at the current cursor
position
The .aspx file is updated as the web site is created in
design mode
The currently designed website can be previewed at any
time
As in normal windows program development, the event
handler code for web controls (eg buttons) have to be
added by the developer
Visual Web Developer
We can create the web page for displaying the
calendar using design mode
The label, text field, button and calendar are
inserted into the page using drag and drop
We set the visible property of the calendar to
false in its properties window
We set the background colour of the outer form
using the properties windon
All code except the Page_Load() and
Button_Click()methods is automatically created
Visual Web Designer Demo
Validation controls
A validation control determines whether the data
entered in a web control is in the proper format
For example a postcode entered in the correct
alphanumeric format
A date entered in the correct dd/mm/yyyy
format
A correct email address is entered
etc
The validation check is carried out by the client by
converting the validator to Javascript to perform
the validation before submitting the data to the
server
Validation controls
Validation controls can be input onto a webpage using
Visual Web Developer
Actual validators for things like phone numbers, email
addresses are defined by regular expressions
These are strings containing formatting characters
used to match to particular patterns in text
We can define our own regular expressions as
validators for particular inputs
Luckily however, Visual Web Developer has a
regular Expression Editor dialog box allowing us to
choose standard regular expressions for things like
email addresses and phone numbers
Validation controls
For example we can create a simple web form to input a
name, email address and phone number into textboxes and
include input validators for each
We can also make each input a required field so that
each field must be input before submitting to the server
We also include a label at the bottom of the form for the
server response
The visible property of this label is initially set to false
http:// www.eee.bham.ac.uk/spannm/ASP NET
stuff/ValidationControls/Validation.aspx
Validation controls
We can add required field validators to each of our
input textboxes
We can set the ControlToValidate and
ErrorMessage properties in the properties
window of each validation control
The validation controls remain invisible in the
website unless an input is not added before the
form is submitted
The required error message is displayed
The form is not submitted to the server
Validation controls
Next we can add RegularExpression validators to
our input text boxes for email and phone numbers
We can use a standard regular expression for
email taken from the dialog which is obtained
from the properties window
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([.]\w+)*
We can generate our own for a UK phone
number
((\(\+\d{2}\) ?)|(\+\d{2}-))?\d{3}-\d{3}-\d{4}
• eg (+44)(121-414-4329)
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Validation.aspx.cs" Inherits="Validation" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Demonstrating Validation Controls</title>
</head>
<body bgcolor="#ffcc99">
<form id="form1" runat="server">
<div>
Please fill out the following form<br /><br />
<strong>All fields are required and must be in the valid format</strong><br /><br /><br />
<asp:Label ID="Label1" runat="server" Font-Bold="True" Text="Name:"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="Please enter your name"
ControlToValidate="TextBox1" Display="Dynamic" ForeColor="Blue"></asp:RequiredFieldValidator><br /><br />
<asp:Label ID="Label2" runat="server" Font-Bold="True" Text="E-mail address:"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:Label ID="Label3" runat="server" Text="[email protected]"></asp:Label><br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="TextBox2"
ErrorMessage="Please enter your email address" ForeColor="Blue"></asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox2"
Display="Dynamic" ErrorMessage="Please input your email address in the correct format"
ForeColor="Blue" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
</asp:RegularExpressionValidator><br />
<asp:Label ID="Label4" runat="server" Font-Bold="True" Text="Phone number:"></asp:Label>
<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
<asp:Label ID="Label5" runat="server" Text="e.g.(+44) 121-414-4324"></asp:Label><br />
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="TextBox3"
Display="Dynamic" ErrorMessage="Please enter your telphone number"ForeColor="Blue">
</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="RegularExpressionValidator2" runat="server" ControlToValidate="TextBox3"
Display="Dynamic" ErrorMessage="Please enter a phone number in valid format"
ForeColor="Blue" ValidationExpression="((\(\+\d{2}\) ?)|(\+\d{2}-))?\d{3}-\d{3}-\d{4}">
</asp:RegularExpressionValidator><br />
<asp:Button ID="Button1" runat="server" Height="37px" Text="Submit" Width="132px" /><br /><br />
<asp:Label ID="Label6" runat="server" Text="Thank you for filling out this form"
Visible="False" Font-Italic="False"> </asp:Label></div>
</form>
</body>
</html>
Validation controls
Its often useful to display the data that was
submitted on the same web form
In practice, this data would be stored on file or
in a database
We can do this using a postback event
A postback event is raised in response to the
client-side button click and causes the page to
be loaded by ASP.NET at the server a second
time
The IsPostBack property of Page is set to
true if the page is re-loaded in response to a
postback
Validation controls
using
using
using
using
using
using
using
System.Configuration;
System.Web;
System.Web.Security;
System.Web.UI;
System.Web.UI.WebControls;
System.Web.UI.WebControls.WebParts;
System.Web.UI.HtmlControls;
public partial class Validation : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string name = Request.Form["TextBox1"];
string email=Request.Form["TextBox2"];
string phone=Request.Form["TextBox3"];
Label6.Text += "<br><br>";
Label6.Text+="You have inputted the following <br>";
Label6.Text+="Name: " + name +"<br>";
Label6.Text+="Email address: " + email +"<br>";
Label6.Text+="Phone number: " + phone +"<br>";
Label6.Visible = true;
}
}
}
Summary
We have looked at the difference between static and
dynamic web pages and how we can generate simple
dynamic web pages
We have looked at how ASP.NET generates dynamic
objects at the web server from .aspx files and C#
codebehind files
We have looked at simple web form programming
We have looked at the use of Visual Web Designer to
build dynamic websites
We have looked at how we can build in validation controls
to our websites