430 likes | 597 Views
ASP.NET Rina Zviel-Girshin Lecture 3. Overview. Cookies Validation controls Client and server side validation Validation control examples. Cookie. HTTP protocol is stateless – does not remember users or user’s actions.
E N D
ASP.NET Rina Zviel-Girshin Lecture 3
Overview • Cookies • Validation controls • Client and server side validation • Validation control examples
Cookie • HTTP protocol is stateless – does not remember users or user’s actions. • Cookie is a small file embedded by server application on the user's computer. • The file is a text file, usually stored in directory named Cookies and having username@WebServerName[1].txt name. • Cookies are useful for storing nonessential data • user preferences or choices. • Each time the same client requests a page the cookie is sent to the server. • The server checks cookie's value and perform some actions according to information stored in cookie.
Cookies in ASP.NET • Exists class HttpCookie which provides a type-safe way to create and manipulate individual HTTP cookies. • Exist several constructors. • A one argument constructor creates a cookie with a given name. • The object of the class has several properties. Some of those are: • Expires- gets or sets the expiration date and time for the cookie. • Values - gets a collection of key-and-value pairs that are contained within a single cookie object. Items can be added to the collection using add(key,value) method. • Value - gets or sets an individual cookie value.
Example- cookietest1.aspx <%@ Page language="c#" Codebehind="cookietest1.aspx.cs" Inherits="cookie1.WebForm1" %> <html><head><title>WebForm1</title></head> <body MS_POSITIONING="GridLayout"> <form id="Form1" method="post" runat="server"> <asp:Label id="Label1" runat="server" Width="303px" Height="23px">Choose the language</asp:Label> <asp:Button id="Button1" runat="server" Width="184px" Height="53px" Text="Remember"></asp:Button> <asp:RadioButtonList id="RadioButtonList1" runat="server" Width="277px" Height="56px"> <asp:ListItem Value="VB" Selected="True">VB</asp:ListItem> <asp:ListItem Value="CSharp">C#</asp:ListItem> </asp:RadioButtonList> </form></body></html>
Output Label RadioButtonList Button
Codebehind- cookietest1.aspx.cs using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace cookie1 { public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.RadioButtonList RadioButtonList1; protected System.Web.UI.WebControls.Label Label1;
Codebehind- cookietest1.aspx.cs (2) private void Button1_Click(object sender, System.EventArgs e){ if (Request.Cookies["language"] == null) { HttpCookie cookie = new HttpCookie("language"); cookie.Expires = DateTime.MaxValue; // never expires cookie.Value = RadioButtonList1.SelectedItem.Value; Response.Cookies.Add(cookie); //sends cookie to user Button1.Text="Show cookie"; } else { String str =Request.Cookies["language"].Value; Label1.Text="All the examples will be shown using "+str; RadioButtonList1.Visible=false; Button1.Visible=false; } } } //end of class }//end of namespace
Output from cookie else { String str = Request.Cookies["language"].Value; Label1.Text="All the examples will be shown using " +str; RadioButtonList1.Visible=false; Button1.Visible=false; }
Validation • Validation definitions: • Tests to determine whether an implemented system fulfills its requirements. • The checking of data for correctness or for compliance with applicable standards, rules, and or minimum requirements. • ASP.NET provides sophisticated validation mechanism that can be added to any page. • What do we want to validate? • Usually a page data items entered or changed by the user.
Validation process • Validation can be performed on client’s side or on server’s side or both. • A client-side validation requires • writing a special script to check if user’s data is correct. • A server-side validation requires • or writing a special server script to check the data • or usage of the specially developed validation server controls. • A good technique is to use both.
Client-side validation • Reduces the number of round trips necessary, instant feedback to the user. • With a client-side validation errors are detected on the client side when the form is submitted to the server. • If any of the validators are found to be in error, the submission of the form to the server is cancelled and the validator's Text property is displayed. • This permits the user to correct the input before submitting the form to the server. • Written inside some script. • Can be viewed by malicious user to enter bad data. • Some browser can’t perform a required script.
Server-side validators • Written inside a server script or server validation controls are used. • Information hiding, security and more. • Functions correctly in any browser (does not depend on client side - performed on server). • A server validation control is used to validate the data written of some input control. • The validation process is relatively simple • If the data does not pass validation, it will display an error message to the user. • If the data passes validation continue to the next item/page/action.
ASP.NET Validation Controls • ASP.NET validation controls automatically generate client-side and server-side code. • If a browser supports a client script language then a client-side validation script is sent to the browser. • If a browser incapable of supporting a client script language then a server validation script automatically implemented. • You can enable/disable client-side validation: • Client-side validation is enabled by default.”uplevel” validation. • <%Page ClientTarget=“downlevel” %> -disables client-side validation
Adding Validation Control to the Page • Validation controls are added to a Web Forms page like any other server controls. • Exists several types of Validation controls: • such as range checking or pattern matching, • or a RequiredFieldValidator that ensures that a user does not skip this field. • You can attach more than one validation control to one input control. • For example • you might specify both that an entry is required and that it must contain a specific range of values.
Input to validate • Validation controls work with a limited subset of HTML and Web server controls. • For each control, a specific property contains the value to be validated. • Some input controls and their validation property: • HtmlInputText (Value) HtmlTextArea(Value) HtmlSelect(Value) HtmlInputFile(Value) – where HTML means HTML control • TextBox(Text) ListBox(SelectedItem.Value) DropDownList (SelectedItem.Value) RadioButtonList (SelectedItem.Value) HTML controls Web-server controls
Types of Validation Controls • There are 5 types of individual validation controls in ASP.NET: • RequiredFieldValidator • CompareValidator • RangeValidator • RegularExpressionValidator • CustomValidator • Also exists a ValidationSummary control that gathers all ErrorMessages and displays them using a bulleted list, a plain list or a single paragraph format. • Each control has a specific action to perform.
Syntax • A basic syntax for creating a validation control is: <asp:control_name id="some_id" ControlToValidate ="some_cnt" runat="server" /> • A more complex syntax specifies more properties: <asp:control_name id="some_id" ControlToValidate ="some_cnt" Display=“value” Text=“some text” ErrorMessage=“message” runat="server" /> • Display property values can be: • static (default - may be hidden but requires a span display), • dynamic (span with none or inline display) and • none (no error message).
RequiredFieldValidator • A RequiredFieldValidatoris the simplest form of validation. • It makes some input a required field - ensures that the user does not skip this entry. • If the user enters any value in a field (even gibberish) it is valid. • The validation fails if the input value does not change from its initial value (InitialValueproperty). • By default the InitialValue is an empty string (""). • If all of the fields in the page are valid, the page is valid.
Example <html><body><form runat="server">Name: <asp:TextBox id="name" runat="server" /><br />Age: <asp:TextBox id="age" runat="server" /><br /><br /><asp:Button runat="server" Text="Submit" /><br /><br /><asp:RequiredFieldValidator ControlToValidate="name"Text="The name field is required!“ runat="server" /></form></body></html>
RangeValidator • ARangeValidator control is used to check that the user enters an input value that falls between two values (a given range). • It is possible to check ranges within • numbers, dates and characters. • ControlToValidate contains name of the control to be validated. • MinimumValue and MaximumValuedefine the minimum and maximum values of the valid range. • Type property specifies the data type of the value to check. • Currency, Date/Time, Double, Integer or String.
Example <html><body><form runat="server">Enter a date between 2005-01-01 and 2005-12-31:<br /><asp:TextBox id="tb" runat="server" /><br /><br /><asp:Button Text="Submit" runat="server" /><br /><br /><asp:RangeValidator ControlToValidate="tb"MinimumValue="2005-01-01" MaximumValue="2005-12-31"Type="Date" EnableClientScript="false"Text="The date must be between 2005-01-01 and 2005-12-31!"runat="server" /></form></body></html>
CompareValidator • Compares the value of one input control to the value of another input control or to a fixed value. • A CompareValidator uses three key properties to perform its validation. • ControlToValidate and ControlToCompare (or ValueToCompare) containing the values to compare • Operator defines the type of comparison to perform • for example: Equal or Not Equal, LessThan or GreaterThanEqual • A Type property of the control is defined as in RangeValidator. • If the expression evaluates true, the validation result is valid.
Example <html><body><form runat="server"><table border="0" bgcolor="#b0c4de"> <tr valign="top"><td colspan="4"><h4>Compare two values</h4></td> </tr><tr valign="top"> <td><asp:TextBox id="txt1" runat="server"/></td> <td> = </td> <td><asp:TextBox id="txt2" runat="server"/> </td> <td><asp:Button Text="Validate" runat="server" /></td> </tr></table><br /><asp:CompareValidator id="compval“ Display="dynamic"ControlToValidate="txt1“ ControlToCompare="txt2" ForeColor="red“ BackColor="yellow" Type="String“ EnableClientScript="false" Text="Validation Failed!" runat="server" /></form></body></html> Why no operator = value given? STYLE
Output ForeColor="red“ BackColor="yellow" Text="Validation Failed!"
Example: a fix value validation <%@ Page Language="C#"%> <script runat=“server”> void Button_Click(Object sender, EventArgs e) {Response.Redirect( "ThankYou.aspx" );} </script> <html><body><form Runat="Server"> Minimum Bid: $2,000<br/> Enter your bid: <asp:TextBox id="Amount" Columns="8" Runat="Server"/> <asp:CompareValidator ControlToValidate="Amount" ValueToCompare="2,000" Display="Dynamic" Text="Your bid must be greater than the minimum bid!" Operator="GreaterThan" Type="Currency" Runat="Server" /> <p><asp:Button Text="Submit" OnClick="Button_Click" Runat="Server"/> </form></body></html>
CustomValidator • Allows you to write a method to handle the validation of the value entered • calls a user-defined function to perform validations. • A user defined function can be executed in the server or in client-side script. • OnServerValidate property specifies the name of the server-side validation script function to be executed. • ClientValidationFunction property specifies the name of the client-side validation script function to be executed • type FunctionName (source, arguments)
Example a spaghetti-like code <script runat="server">void user(object source, ServerValidateEventArgs args ) { if (args.Value.length<8 || args.Value.length>18) args.IsValid=false else args.IsValid=true }</script> <html><body><form runat="server"><asp:Label runat="server" Text="Enter a username: " /><asp:TextBox id="txt1" runat="server" /><asp:Button Text="Submit" runat="server"/><br /><asp:CustomValidator ControlToValidate="txt1"OnServerValidate="user" Text="A username must be between 8 and 18 characters!" runat="server"/> </form></body></html>
RegularExpressionValidator • A RegularExpressionValidator control is used to ensure that an input value matches a specified pattern, called a regular expression. • Both server- and client-side validation are performed unless • the browser does not support the client-side validation • or the EnableClientScript property is set to false. • ValidationExpression property specifies the expression used to validate an input control. • The regular expression is a string and therefore is written between quotes.
Regular Expressions • Some basic regular expressions: • "[a-z]" validates all characters of the alphabet • "[^a-z]" validates all characters that is not in the alphabet • “[abcd]” a “character class” - means a or b or c or d • “.” means any character except a newline • “r*” - means repetition of r 0 or more times • “a?” means zero or one a’s • "[0-9]" validates all numeric characters • "[^0-9]" valid all non-numeric characters • "\d" validates a numeric character
Regular Expressions cont. • Some basic regular expressions: • "\n" validates a line break • "\t" validates a tabulation • "\s" validates all blank character (line break, space, tabulation) • "\." is for displaying the point • "^" is for being at the beginning of the line • "$" is for being at the end of the line (so "^$" is an empty string) • “a{1,3}” - means from one to three a’s • “rs” – means r concatenated with s
Examples • “[1-9][0-9]*” validates integer constants • “[^0-9\n]” validates any letter except upper case letters or a new-line • "zo{2}" validates "zoo“ • "zo*" validates "z“, “zo” and "zoo" (one character followed by * is valid if this character is present 0 or n times) • "zo{1,2}" validates "zo" and "zoo“ • "do(es)?" validates "do" or "does"
More complicated expressions • An email validation (pattern : smb@domain.com) • ".*@.*\..*" • A five digits postal code will be validated by • "^\d{5}$“ • A phone number will be validated by (bezeq) • "^0[2-48-9]-\d{7}$"
Partial Example Enter an email: <input type="text" id=“email" size="40" runat="server" />Tip: enter a valid email address<asp:RegularExpressionValidator id="valRegExpr" ControlToValidate=“email“ runat="server"ValidationExpression=".*@.*\..*"ErrorMessage="* Your entry does not match the correct email syntax“ Display="dynamic">* </asp:RegularExpressionValidator>
IsValid property • After all validation controls have been processed, the IsValid property on the page is set. • If any of the controls shows that a validation check failed, the entire page is set to be invalid. • If a validation control is in error, an error message may be displayed in the page by that validation control or in a ValidationSummary control elsewhere on the page. • The ValidationSummary control is displayed when the IsValid property of the page is false.
ValidationSummary • The ValidationSummary control is used to display a summary of all validation errors occurred in a Web page. • The error message displayed in this control is specified by the ErrorMessage property of each validation control. • If an ErrorMessage property of the validation control is not set - no error message is displayed for that validation control. • DisplayMode property can be one of the • BulletList, List or SingleParagraph
Example <html><body><form runat="server"><table><tr><td><table bgcolor="#b0c4de" cellspacing="10"> <tr> <td align="right">Name:</td> <td><asp:TextBox id=“tb" runat="server"/></td> <td> <asp:RequiredFieldValidator Text="*" ControlToValidate=“tb" ErrorMessage="Name“ runat="server"/> </td> </tr> <tr> <td align="right">Card Type:</td> <td><asp:RadioButtonList id="rbl" RepeatLayout="Flow“ runat="server"> <asp:ListItem>Diners</asp:ListItem><asp:ListItem>MasterCard</asp:ListItem> </asp:RadioButtonList></td> <td> <asp:RequiredFieldValidator ControlToValidate="rbl" InitialValue=" " ErrorMessage="Card Type" Text="*" runat="server"/> </td> </tr> <tr> <td></td> <td><asp:Button id="b1" Text="Submit“ runat="server"/> </td> <td></td> </tr></table> <asp:ValidationSummaryHeaderText="You must enter a value in the following fields:"DisplayMode="BulletList“ EnableClientScript="true“ runat="server"/></form></body></html>
Output <asp:ValidationSummaryHeaderText="You must enter a value in the following fields:"DisplayMode="BulletList“ EnableClientScript="true“ runat="server"/>
Events in .NET • There are hundreds events in .NET. • Some are user depended • clicks, selections, changing values, • and some are generated by ASP.NET itself • database item inserted into DataGrid. • The user depended events can be divided into two types: • Postback Events - immediately reported to the Web server via a form submission • buttons, hyperlinks • Non-Postback Events - the browser takes note of but doesn't report until the next form submission • checkbox, radio button and list selections, text entries