Your application requires the use of a specific browser and you want to determine whether the required browser is being used before allowing a user to access your application.
Use the properties of the Request.Browser
object
to determine the browser type and version, and then take the action
required by your application.
In the code-behind class for the page, use the .NET language of your choice to:
Use the Browser
property of the
Request.Browser
object to return a string
representing the full browser type, such as
“IE” in the case of Internet
Explorer.
Use the Version
property of the
Request.Browser
object to return a string that
represents the major and minor version of the browser, such as
“6.0” in the case of IE 6.0.
Take action accordingly, such as outputting a message indicating whether the user’s browser is compatible with the application.
Example 18-10 through Example 18-12 show the .aspx
file and
the VB and C# code-behind files for an application that demonstrates
the solution. The output of our example program is shown in Figure
18-2.
With the variety of different browsers in use today and the significant variation in their capabilities, it is not uncommon to need to determine the type of browser being used. Then, based on the browser, you may need to inform the user that the browser is incompatible with your application or output different HTML to support the specific browser.
Our example demonstrates the functionality provided in ASP.NET to
determine the browser type and version, and then output this
information along with a message indicating whether the
user’s browser is compatible with the application.
The .aspx
file contains two
asp:Literal
controls used to output messages to
the user. The first outputs the browser version information, and the
second informs the user whether his browser is compatible with the
application.
In the Page_Load
method of the code-behind, the
Browser
and Version
properties
of the Request.Browser
object are used to create a
message to inform the user of the detected browser version. The
Browser
property returns a string such as
“IE”,
“Netscape”,
“Opera”, etc. The
Version
property returns a string that represents
the major and minor version of the browser. For Internet Explorer
6.0, for instance, the Browser
property will
return “IE” and the
Version
property will return
“6.0”.
Next, the browser type and major version number are compared to the minimum requirements for the application (IE and Version 5). If the browser is IE 5.0 or later, a message is displayed indicating the browser is compatible with the application. Otherwise, a message is displayed indicating the application requires IE 5.0 or later.
For your application, you might want to check the browser version on the home page. If the browser is compatible with your application, output the home page normally. Otherwise, redirect the user to a message page indicating the browser requirements.
The Request.Browser
object contains many
properties not used in this example but that may be useful in your
application. Table 18-1 lists some of the commonly
used properties. For a complete list of the available properties,
refer to the documentation on the
HttpBrowserCapabilities
class in the MSDN Library.
Table 18-1. Commonly used browser object properties
Property |
Description |
---|---|
|
Returns a string indicating the browser type (IE, Netscape, Opera, etc.) |
|
Returns a Boolean value indicating whether the browser supports cookies |
|
Returns a Boolean value indicating whether the browser supports JavaScript |
|
Returns an integer value indicating the major version of the browser (integer portion of the browser version) |
|
Returns an double value indicating the minor version of the browser (decimal portion of the browser version) |
|
Returns a string representing the full browser version (integer and decimal portion) |
Properties that return Boolean values, such as
Cookies
and JavaScript
,
indicate what the browser is capable of supporting but not
necessarily the current configuration. If the browser supports
cookies but the user has configured the browser to disable cookies,
the Cookies
property will still return true.
HttpBrowserCapabilities
documentation in the MSDN
Library
Example 18-10. Determining the user browser type (.aspx)
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="CH18DeterminingBrowserVB.aspx.vb" Inherits="ASPNetCookbook.VBExamples.CH18DeterminingBrowserVB" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Determining Browser</title> <link rel="stylesheet" href="css/ASPNetCookbook.css"> </head> <body leftmargin="0" marginheight="0" marginwidth="0" topmargin="0"> <form id="frmDetermineBrowser" method="post" runat="server" > <table width="100%" cellpadding="0" cellspacing="0" border="0"> <tr> <td align="center"> <img src="images/ASPNETCookbookHeading_blue.gif"> </td> </tr> <tr> <td class="dividerLine"> <img src="images/spacer.gif" height="6" border="0"></td> </tr> </table> <table width="90%" align="center" border="0"> <tr> <td><img src="images/spacer.gif" height="10" border="0"></td> </tr> <tr> <td align="center" class="PageHeading"> Determining User Browser (VB) </td> </tr> <tr> <td><img src="images/spacer.gif" height="10" border="0"></td> </tr> <tr> <td align="center" class="MenuItem"><asp:Literal ID="litBrowser" Runat="server" />
<br /><br /><asp:Literal ID="litMessage" Runat="server" />
</td> </tr> </table> </form> </body> </html>
Example 18-11. Determining the user browser type code-behind (.vb)
Option Explicit On Option Strict On '----------------------------------------------------------------------------- ' ' Module Name: CH18DeterminingBrowserVB.aspx.vb ' ' Description: This module provides the code behind for the ' CH18DeterminingBrowserVB.aspx page ' '***************************************************************************** Namespace ASPNetCookbook.VBExamples Public Class CH18DeterminingBrowserVB Inherits System.Web.UI.Page 'controls on the form Protected litBrowser As System.Web.UI.WebControls.Literal Protected litMessage As System.Web.UI.WebControls.Literal '************************************************************************* ' ' ROUTINE: Page_Load ' ' DESCRIPTION: This routine provides the event handler for the page load ' event. It is responsible for initializing the controls ' on the page. '------------------------------------------------------------------------- Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load'output user browser
litBrowser.Text = "Your browser is " & _
Request.Browser.Browser & " " & _
Request.Browser.Version
'check to see if it is an acceptable version
If ((Request.Browser.Browser = "IE") AndAlso _
(Request.Browser.MajorVersion >= 5)) Then
'output message indicating it is OK
litMessage.Text = "It is compatible with this application."
Else
'output message indicating IE 5 or later must be used
litMessage.Text = "This application requires IE 5.0 or later."
End If
End Sub 'Page_Load End Class 'CH18DeterminingBrowserVB End Namespace
Example 18-12. Determining the user browser type code-behind (.cs)
//---------------------------------------------------------------------------- // // Module Name: CH18DeterminingBrowserCS.aspx.cs // // Description: This module provides the code behind for the // CH18DeterminingBrowserCS.aspx page // using System; namespace ASPNetCookbook.CSExamples { public class CH18DeterminingBrowserCS : System.Web.UI.Page { // controls on the form protected System.Web.UI.WebControls.Literal litBrowser; protected System.Web.UI.WebControls.Literal litMessage; //************************************************************************ // // ROUTINE: Page_Load // // DESCRIPTION: This routine provides the event handler for the page // load event. It is responsible for initializing the // controls on the page. //------------------------------------------------------------------------ private void Page_Load(object sender, System.EventArgs e) {// output user browser
litBrowser.Text = "Your browser is " +
Request.Browser.Browser + " " +
Request.Browser.Version;
// check to see if it is an acceptable version
if ((Request.Browser.Browser == "IE") &
(Request.Browser.MajorVersion >= 5))
{
// output message indicating it is OK
litMessage.Text = "It is compatible with this application.";
}
else
{
// output message indicating IE 5 or later must be used
litMessage.Text = "This application requires IE 5.0 or later.";
}
} // Page_Load } // CH18DeterminingBrowserCS }