230 likes | 318 Views
Working with ASP Pages. The <form> Tag (1). Remember that most ASP.NET pages contain a single <form> tag with the runat attribute set It’s possible to have multiple <form> tags but only one can be visible at a time Visible property is true
E N D
The <form> Tag (1) • Remember that most ASP.NET pages contain a single <form> tag with the runat attribute set • It’s possible to have multiple <form> tags but only one can be visible at a time • Visible property is true • This capability is great for implementing wizards (sequential dialog boxes) • The MultiView and Wizard control can also be used
The <form> Tag (2) • Generally <form> tags are the outermost tag but can be children of container controls <table>, <div>, etc… • Non-container (server) controls must appear inside of a <form> tag or exceptions will be thrown at run-time • No compile error occurs
The HtmlForm Class (1) • A form is accessed on the server using the HtmlForm class • The DefaultButton property sets the form’s default button • The button clicked when enter is pressed • The InnerHtml property contains the markup between the opening and closing tags
The HtmlForm Class (2) • The HasControls method indicates whether a from has child controls • The FindControl finds the control instance with a particular ID • Only direct children are searched • The Focus method sets input focus to a particular control
Cross-Page Posting (Introduction 1) • You can use a HyperLink control to create a link to another page • Any Button control can be used for cross-page postbacks • Set the PostBackURL property to the desired Web page
Cross-Page Posting (Introduction 2) • Use the Server.Transfer method • The target page is passed as an argument • Any code following Server.Transfer is not executed Server.Transfer(“DestinationPage.aspx”);
Cross-Page Posting (Getting Data from the Previous Page) • The PreviousPage property of the Page object contains a reference to the page that caused the postback • This property allows you to get at the controls from the previous form and their values • This is magically accomplished through viewstate
Cross-Page Posting (Example) • Get a reference to a control on another page and print the text TextBox txt; txt = (TextBox)PreviousPage.FindControl( "txtPreserve"); Response.Write(txt.Text);
Detecting Cross-Page Postbasks (1) • Test the PreviousPage property to see if it is null • If it is, the page was not loaded as a cross-page postback • Test the IsCrossPagePostBack property of the ‘posting’ page
Detecting Cross-Page Postbacks (2) • The @PreviousPageType directive allows you to use strongly typed syntax if page “b” will only be posted from page “a” <%@ PreviousPageTypevirtualPath=“a.aspx” %>
Cross page Postback vs. Server.Transfer • Cross page postbacks are client-based • The Transfer method is server-based • Both allow you to reference the PreviousPage property
Introduction to Error Handling • Just like desktop applications, exceptions are thrown in various cases • Divide by 0, IO, Database, etc. • Unhandled, we call these the yellow page of death • What happens depends on the following Web.config setting: <compilation debug="false">
Handling Errors (Introduction) • Exception handlers are created (as usual) using try, catch blocks • The Page_Error event handler gives you a global exception handler for the page • The Application_Error event applies to the entire application itself
Handling Errors (Introduction) • Use Server.GetLasError() to get information about the most recent error • Use Server.ClearError() to clear the exception • Create other exception handlers, as necessary
Configuring Custom Errors • It’s all controlled by the customErrors section of the Web.config file • Attributes • defaultRedirect attribute causes a redirect to the specified page • Mode attribute enables / disables custom errors • On – Enables custom for remote and local hosts • Off – Disables custom errors • RemoteOnly – (default) Custom errors are displayed to the remote client
Configuring Custom Errors (Example) <customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> <error statusCode ="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors>
Tracing (Introduction) • It’s possible to trace execution by enabling tracing in the Web.config file • @Page directives can also be used • Example <trace enabled="true" pageOutput="true"/> • See handout