When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles [1.x] [2.0]
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips
Search

Sections:
Book Reviews
Sample Chapters
Commonly Asked Message Board Questions
Headlines from ASPWire.com
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
Web Hosts
XML
Information:
Advertise
Feedback
Author an Article
Jobs
















internet.com
IT
Developer
Internet News
Small Business
Personal Technology
International

Search internet.com
Advertise
Corporate Info
Newsletters
Tech Jobs
E-mail Offers
ASP ASP.NET ASP FAQs Message Board Feedback ASP Jobs
Print this Page!

Windows Systems Administrator
Jupitermedia
US-CT-Darien

Justtechjobs.com Post A Job | Post A Resume

Published: Wednesday, February 11, 2004

Adding Client-Side Message Boxes in your ASP.NET Web Pages
By Tim Stall


Introduction
One of the useful features in a Windows desktop application that many programmers and end-users take for granted is message boxes. Two of the most common types of message boxes are alerts and confirms. A confirm message box prompts the user if they want to continue, and provides two choices: "OK" and "Cancel". Clicking "OK" confirms the action, while "Cancel" cancels it.

- continued -

A confirmation message box has an OK and Cancel button.

An alert message box, on the other hand, simply presents a message to the user. There is no choice, here, just an "OK" button that the user must click to dispose of the message box.

An alert message box displays just an OK button.

Using client-side message boxes on a Web site offers a number of benefits. Message boxes, if used intelligently, can help ensure that the reader sees important information - by placing important messages or warnings in message boxes you can rest assured that your visitors are more apt to see and read the message than if you placed the same message in some label on the page. For example an alert box can provide a practical way to inform the user that some of the data they entered was invalid. A confirm box could provide a safety check to ensure that the user was certain that they wanted to delete something. (For an article on discussing how to add client-side confirmation to Delete buttons in a DataGrid be sure to read An Extensive Examination of the DataGrid Web Control: Part 8.) Message boxes can be a clean way to present information to your users, as opposed to weaving in labels throughout the page. Perhaps most importantly, end users are familiar with message boxes, having used them repeatedly before in desktop applications.

In addition to the pros of message boxes, there are also two major cons: first, message boxes require an extra click from the end user – as opposed to just browsing a label message without clicking anything. Second, message boxes reside on the client and are displayed using client-side script, but an end user can always disable client side scripting. Users who have disabled client-side scripting in their browser will not see the message boxes. This latter disadvantage, however, should not be too great a concern since virtually all Web surfers have client-side scripting enabled.

The Challenges in Using Message Boxes with ASP.NET
The problem with message boxes is that they are created on the client, and therefore cannot be directly created from server-side code. Since ASP.NET Web pages' code-behind classes are running on the Web server, it is impossible for this server-side code to be able to directly invoke some client-side functionality. Rather, the server-side code needs to emit the proper client-side JavaScript code along with the rendered HTML so that when this is sent back to the client, the client can display the message box. (If you are not familiar with the difference between client-side and server-side behavior, consider reading ASP Basics: What's Happening Back There? before continuing...)

In this article we'll see how to create a utility class that can be used in our ASP.NET Web pages' code-behind classes. This utility class will contain methods for displaying client-side message boxes. These methods will emit the proper HTML and client-side JavaScript necessary to display the message box.

Displaying a Confirm Message Box
Let's begin by examining how to add a confirm message box that is displayed when the user clicks a button. Before ASP.NET, one way to do this would be make a regular HTML <input> button and add a JavaScript onclick event to the button which calls the JavaScript method confirm(), thereby displaying a client-side confirm message box upon the button being clicked.

With ASP.NET, however, we don't directly create the HTML markup for a button. That is, we don't type in the HTML for an <input> HTML element. Rather, we use a Button Web control, which is rendered into the appropriate HTML. With the Web control model rather than manually interweaving JavaScript into the HTML portion of an ASP.NET Web page, we instead programmatically set a property of the Button Web control class.

To accomplish this, start by adding a Button Web control to an ASP.NET Web page and give it an ID of BtnDelete. If we stopped here, the Button Web control would generate the following HTML:

<input type="submit" name="BtnDelete" value="Delete" id="BtnDelete" />

This HTML, however, is missing the client-side JavaScript onclick event handler. What we really want to generated is something that includes the JavaScript, like:

<input type="submit" name="BtnDelete" value="Delete" id="BtnDelete"
     onclick="return confirm('Are you sure you want to delete?');" />

In other words, we want to add another attribute to the rendered <input> element and assign it a value. (Specifically, we want to add the onclick attribute with the value return confirm('Are you sure you want to delete?');.) Fortunately, all ASP.NET Web controls provide an Attributes property that provides a collection of attributes for the rendered HTML element along with the attributes' values. The Attributes property has an Add(key, value) method that can be used to add a new attribute and value to an existing Web control. Therefore, to add the appropriate JavaScript to the BtnDelete Button Web control, we could add the following code:

Private Sub Page_Load(ByVal sender As System.Object, _
                      ByVal e As System.EventArgs) Handles MyBase.Load
   If (Not Page.IsPostBack) Then
      Me.BtnDelete.Attributes.Add("onclick", _
                   "return confirm('Are you sure you want to delete?');")
   End If
End Sub

Because we only need to add this attribute once (and not on every page load), we place the code in the Not Page.IsPostBack block.

A Comment About the Client-Side JavaScript confirm() Function
The client-side JavaScript confirm(string) function displays a confirm message box, displaying the string message passed into the function. Recall that confirm message boxes provide both "OK" and "Cancel" buttons. If the "OK" button is clicked, confirm() returns true; if "Cancel" is clicked, it returns false. The return keyword is used to return the result of the confirm message box. If a value of false is returned, then the form is not submitted. For more information on confirm() check out JavaScript Confirm Form Submission and Using JavaScript's confirm() Method to Control Form Submission.

If you visit the page through a Web browser and click the button, you should see something like the screenshot below.

A confirmation message box is displayed when the button is clicked.

If you plan on needing to add a confirm message box for numerous ASP.NET Web pages, it might make sense to create a Utilities class with a static method that accepts a Button Web control and a string message and sets the Button's Attributes property accordingly.

Public Class Utilities
  Public Shared Sub CreateConfirmBox(ByRef btn As WebControls.Button, _
                                     ByVal strMessage As String)
     btn.Attributes.Add("onclick", "return confirm('" & strMessage & "');")
  End Sub
End Class

We could then call this helper method from within the Page_Load event of the Web Form, passing both a reference to the button as well as the message:

Utilities.CreateConfirmBox(Me.BtnDeleteUtil, _
         "Are you sure you want to delete (this uses the Utilities Class)?")

By placing the functionality in the Utilities class, we are able to easily reuse the code in other ASP.NET Web pages. This is similar to the technique of using include files in classic ASP. For more information on using classes as a repository for reusable code fragments, check out: Accessing Common Code, Constants, and Functions in an ASP.NET Project.

Now that we have examined how to display a confirm message box, let's turn our attention to displaying alert message boxes. We'll tackle this in Part 2 of this article.

  • Read Part 2!


    Windows Internet Technology | ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article



  • JupiterOnlineMedia

    internet.comearthweb.comDevx.commediabistro.comGraphics.com

    Search:

    Jupitermedia Corporation has two divisions: Jupiterimages and JupiterOnlineMedia

    Jupitermedia Corporate Info


    Legal Notices, Licensing, Reprints, & Permissions, Privacy Policy.

    Advertise | Newsletters | Tech Jobs | Shopping | E-mail Offers

    Solutions
    Whitepapers and eBooks
    Microsoft Article: HyperV-The Killer Feature in WinServer ‘08
    Avaya Article: How to Feed Data into the Avaya Event Processor
    Microsoft Article: Install What You Need with Win Server ‘08
    HP eBook: Putting the Green into IT
    Whitepaper: HP Integrated Citrix XenServer for HP ProLiant Servers
    Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 1
    Intel Go Parallel Portal: Interview with C++ Guru Herb Sutter, Part 2--The Future of Concurrency
    Avaya Article: Setting Up a SIP A/S Development Environment
    IBM Article: How Cool Is Your Data Center?
    Microsoft Article: Managing Virtual Machines with Microsoft System Center
    HP eBook: Storage Networking , Part 1
    Microsoft Article: Solving Data Center Complexity with Microsoft System Center Configuration Manager 2007
    MORE WHITEPAPERS, EBOOKS, AND ARTICLES
    Webcasts
    Intel Video: Are Multi-core Processors Here to Stay?
    On-Demand Webcast: Five Virtualization Trends to Watch
    HP Video: Page Cost Calculator
    Intel Video: APIs for Parallel Programming
    HP Webcast: Storage Is Changing Fast - Be Ready or Be Left Behind
    Microsoft Silverlight Video: Creating Fading Controls with Expression Design and Expression Blend 2
    MORE WEBCASTS, PODCASTS, AND VIDEOS
    Downloads and eKits
    Sun Download: Solaris 8 Migration Assistant
    Sybase Download: SQL Anywhere Developer Edition
    Red Gate Download: SQL Backup Pro and free DBA Best Practices eBook
    Red Gate Download: SQL Compare Pro 6
    Iron Speed Designer Application Generator
    MORE DOWNLOADS, EKITS, AND FREE TRIALS
    Tutorials and Demos
    How-to-Article: Preparing for Hyper-Threading Technology and Dual Core Technology
    eTouch PDF: Conquering the Tyranny of E-Mail and Word Processors
    IBM Article: Collaborating in the High-Performance Workplace
    HP Demo: StorageWorks EVA4400
    Intel Featured Algorhythm: Intel Threading Building Blocks--The Pipeline Class
    Microsoft How-to Article: Get Going with Silverlight and Windows Live
    MORE TUTORIALS, DEMOS AND STEP-BY-STEP GUIDES