Abstract:
The described systems and methods are directed at defining web content navigation. The disclosed technique enables the development of web content for a scenario without having to create every navigational control that is needed to manage the flow through the web content in the scenario or to write non-declarative server-side logic to control navigation. This method determines a declaration in a source file for a web page. The declaration is associated with an object. The method determines the views associated with the object where each of the views includes a user-interface. A flow for navigating through the views is determined. The views are rendered in accordance with the navigational flow.

Description:
TECHNICAL FIELD 
     The systems and methods discussed herein relate to web page navigation. 
     BACKGROUND OF THE INVENTION 
     Pages in the World Wide Web (Web) are typically written in hyper text markup language (HTML). Server-side logic controlling navigation and performing data access and other server-side functionality is typically written in a procedural or object-oriented programming language to tie pages together, forming a web application. These web pages are stored on servers connected through the Internet. Each web page is associated with a uniform resource locator (URL) and a user/client can browse to a particular web page by requesting the web page from a server using the URL corresponding to the web page. 
     Web applications are increasingly being used to interact with users in a web-based environment. These web applications may include many different types of scenarios, such as login and logout operations, e-commerce, help wizards, and the like. To interact with users for a particular scenario, a web application typically has to include multiple web pages to present information to and receive input from the users. Web developers typically have to carefully design web pages and server-side procedural logic for a web application to manage the navigation of the pages through a scenario. Specifically, a web developer must incorporate multiple navigational controls in each web page and add server-side procedural logic to ensure that the navigational controls in all of the web pages allow a user to correctly navigate through the scenario. If web pages with dynamic content are used, the developer must also include server-side logic to accurately track and respond to the user-driven navigation flow through these dynamically changing pages. Web pages developed in this labor-intensive manner are expensive and error prone. 
     Thus, there is a need for an efficient web development technique for defining navigational flow in a scenario without the need to write procedural server-side navigational logic in each web page and to track the navigation flow through the web pages. 
     SUMMARY OF THE INVENTION 
     The systems and methods described herein are directed at defining web content navigation by declaring multiview objects. The disclosed technique enables the development of web content for a scenario without having to write server-side navigational logic to manage the flow through the web content in the scenario. 
     In one aspect, a method determines a declaration in a web page. The declaration is associated with an object. The method determines the views associated with the object where each of the views includes a user-interface. A flow for navigating through the views is determined. The views are rendered in accordance with the navigational flow. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a schematic diagram of a system for declarative scenario based navigation. 
         FIG. 2  is a schematic diagram of the components associated with the request handler and the rendering engine shown in  FIG. 1 . 
         FIG. 3  is a schematic diagram of a data structure for a multiview object. 
         FIG. 4  is a graphical representation of an operational flow associated with a request for a web page. 
         FIG. 5  is a flow diagram of an example process for a server to process a web page request from a client. 
         FIG. 6  is a flow diagram of an example process for a server to process a multiview object associated with a web page. 
         FIG. 7  illustrates an example computing device within which the described systems and methods can be either fully or partially implemented. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  is a schematic diagram of a system  100  for declarative scenario based navigation. System  100  includes client  110  and server  120 . Client  110  and server  120  may include any type of computing device. Client  110  is configured to enable users to request web pages. For example, client  110  is configured to send a request for a web page to server  120  and to render the web page for the users using data received from server  120 . The data sent from server  120  to client  110  may include information for rendering a view associated with a web application on server  120 . A view is a web-based user-interface that enables a user to interact with a web application. Client  110  is configured to present views to the user and to send inputs from the user to server  120 . 
     Server  120  is configured to provide web content to client  110 . As shown in  FIG. 1 , server  120  includes request handler  123  and rendering engine  125 . Both of these components will be discussed in detail in conjunction with  FIG. 2 . Briefly stated, request handler  123  is configured to process a request for a web page by locating and retrieving a source file associated with the request. The source file may include declarations for one or more objects. The declarations may specify the properties, states, options, and other information related to the objects. Rendering engine  125  is configured to generate web content based on the object-oriented source file. Particularly, rendering engine  125  is configured to obtain programmatic access to objects associated with the declarations in the source file. These objects are used to generate views and may include both data and procedures for manipulating the data. 
     Server  120  may also be configured to interact with other computing devices, such as backend servers  130 . Backend servers  130  may be configured to provide a variety of services to server  120 , such as e-commerce services, user authentication services, emailing services, phone and paging services, and the like. Server  120  may subscribe to the services provided by backend servers  130  to implement the object-oriented source file determined by request handler  123 . 
     Server  120  may communicate with backend servers  130  and client  110  through any type of network, such as wide area network (WAN), local area network (LAN), wireless network, the Internet, and the like. 
       FIG. 2  is a schematic diagram of the components associated with the request handler  123  and the rendering engine  125  shown in  FIG. 1 . Request handler  123  is configured to receive requests  200  for web pages. Requests  200  may include any type of information associated with the request web pages, such as an address, a uniform resource locator (URL), and user input. 
     Request handler  123  is configured to access source files  223 . Each of the source files  223  includes program code and is associated with a web page, which may be identified by an address. Request handler  123  is configured to determine a source file corresponding to the address in a request. Each of the source files  223  includes object declarations  225 , which are declarations for objects  235  used for generating views associated with the requested web page. Object declarations  225  are typically included in a source file as mark-up tags. Each tag may include an identifier associated with an object and other information related to the object, such as properties, states, and options. 
     Rendering engine  125  is configured to process source files  223  and to generate views  250  from the codes. To generate views  250 , rendering engine  125  determines object declarations  225  in source files  223  and gains access to objects  235  associated with object declarations  225 . Rendering engine  125  uses the data and procedures associated with objects  235  for rendering views  250 . In addition to rendering views  250 , rendering engine  125  may also perform other operations associated with objects  235 , such as sending an email, authenticating a user, setting up a user account, handling a business transaction, making a phone call or a page, and the like. To perform these operations, rendering engine  125  may interact with other components, such as email handler  245 , account manager  246 , e-commerce manager  247 , communication handler  248 , and the like. Components  245 - 248  may be executing on server  120  shown in  FIG. 1  or other servers such as backend server  130 . 
     As illustrated in  FIG. 2 , web page source files  223  may include multiview object declarations  227 , which are declarations for multiview objects  237 . Multiview objects  237  will be discussed in more detail in conjunction with  FIG. 3 . Briefly stated, a multiview object is an object that is configured to enable a server to generate multiple views. A multiview object may include other objects, logic, and data for the server to render the views to a client. A multiview object may be associated with a scenario, such as a login scenario, a logout scenario, a password recovery scenario, an e-commerce scenario, a wizard scenario, a change password scenario, a create user scenario, and the like. A web developer of a web page may implement multiple views for a scenario by including a declaration for the multiview object associated with that scenario in the source file for the web page. 
     It is to be understood that the use of multiview objects enables a web developer to implement multiple views associated with a scenario without having to incorporate controls in each of the views or to dynamically manage navigational flow through the views. Multiview object may also encapsulate other operations and data associated with a scenario so that the web developer may incorporate an entire scenario package into a web application with a single declaration in a source file. The web developer may specify properties, states, and options to tailor the multiview object for producing the desired scenario. 
       FIG. 3  is a schematic diagram of a data structure for a multiview object  300 . As shown in  FIG. 3 , multiview object  300  may include multiple views, such as views  311 - 313 . Each of the views  311 - 313  may include objects, logic and data for implementing that view and performing operations associated with the view. For example, view  311  includes layout data  321 , server control objects  324 , user control objects  325 , navigational logic  334 , operational logic  335 , and other data  337 . 
     Server control objects  324  define logical controls for implementing operations that are executed by the server. For example, multiview object  300  is a type of server control object. Server control objects  324  may include data and procedures for the server to execute any type of operation. The operations associated with server control objects  324  may be related to rendering view  311  or performing actions in connection with view  311 . 
     User control objects  325  define logical controls for users that may be included in view  311 . User control objects  325  may include data and procedures for implementing any type of user logical control, such as a button, a textbox, a pull-down menu, a selectable area, and the like. 
     Layout data  321  includes the framework for organizing the elements in view  311 . For example, layout data  321  may define where to place the logical controls defined by user control objects  325  in view  311 . Layout data  321  may also include text, multimedia items, and other content for including in view  311 . Layout data  321  may be supplied by the view rendering server that handles multiview object  300  or other servers that are in communication with the view rendering server. These other servers may be configured to supply specialized data, such as stock quotes, maps, weather information, and the like. 
     Navigational logic  334  includes data and procedures for navigating among views associated with multiview object  300 . Navigational logic  334  may be implemented in server control objects  324 , user control objects  325 , or as separate rules as part of view  311 . The navigational flow included in navigational logic  334  is typically tested to ensure that the flow is consistent with a scenario associated with multiview object  300 . The navigational flow may be a linear flow, a non-linear flow, a user-driven flow, an operational dependent flow, and the like. Navigational logic  334  may include instructions for moving to a previous view, a next view, or a specific view associated with multiview object  300 . Navigational logic  334  may include instructions for moving to a particular view based on an input received through another view. 
     Operational logic  335  includes data and procedures for performing operations associated with view  311 . Operational logic  335  may be implemented in server control objects  324  and user control objects  325 . Operational logic  335  may also be implemented as separate operations as part of view  311 . Operational logic  335  may be performed by the view rendering server that handles multiview object  300  or other servers that are in communication with the view rendering server. For example, an operation specified by operational logic  335  may be performed by a server that specializes to perform such operation. These operations may include emailing handling, user authentication, e-commerce, phone and paging services, and the like. 
     In addition to the above-identified objects and logic, view  311  may include other data  337  that is used to implement the view. The objects discussed above may be implemented as classes of objects. For example, multiview object  300  may be implemented as a container class that includes view object classes  311 - 313 . A server may create instances of these objects for rendering views associated a multiview object that is declared in a source file. 
       FIG. 4  is a graphical representation of an operational flow associated with a request  400  for a web page. Request  400  may include an address associated with the requested web page. The address in request  400  is uniquely associated with a web page source file  405 . As shown in  FIG. 4 , source file  405  includes a declaration  407  associated with a multiview server control, which is related to a password recovery scenario. Declaration  407  is included in source file  405  as a mark-up tag. A more detailed example of a multiview control declaration and related object classes will be discussed below. 
     Multiview server control “pwrecovery” is associated with views  410 . These views enable a user to navigate through a password recovery scenario. Initial view  421  enables a user to supply a user name for which the password is to be recovered. The items in initial view  421  include text, a text box and a button. Initial view  421  also includes logic for submitting information to an account manager to identify the user with the input user name. Initial view  421  may include logic for navigating to different views based on input from the user and information from the account manager. For example, if the user name is valid, initial view  421  is configured to navigate to Q &amp; A view  422 . 
     Q &amp; A view  422  includes information about a question received from the account manager to authenticate the user. Q &amp; A view  422  is configured to receive the input from the user and to submit the input to the account manger. Q &amp; A view  422  is also configured to navigate to confirmation view  423  if the answer submitted by the user is correct. 
     Confirmation view  423  is configured to inform the user that a password recovery scenario has been successfully completed. Confirmation view  423  may display information received from the account manager to the user. Confirmation view  423  may also be configured to interact with an email handler to send the recovered password to the user in an email. 
       FIG. 5  is a flow diagram of an example process  500  for a server to process a web page request from a client. At block  505 , a request for a web page is received. The request may include an address and other data associated with the web page. At block  510 , a source file associated with the web page is determined. 
     At decision block  515 , a determination is made whether the source file includes declarations for multiview objects. If so, process  500  moves to block  517  where the declared multiview objects are processed. The processing of multiview objects will be discussed in more detail in conjunction with  FIG. 6 . Briefly stated, views associated with the multiview objects are automatically rendered. Users may navigate through the rendered views to complete a scenario associated with the multiview object. It is to be understood that decision block  515  and block  517  are included to demonstrate the processing of multiview object declarations. The order in which objects in a source file are processed is typical specified by the code. After the multiview objects have been processed, process  500  moves to decision block  520 . 
     Returning to decision block  515 , if the source file does not include any multiview objects, process  500  also moves to decision block  520 . At decision block  520 , a determination is made whether the source file includes rendering instructions. The source file may include rendering instructions in hyper text markup language (HTML), scripts, object-oriented instructions, and the like. If the source file includes rendering instructions, process  500  moves to block  525  where the web page is rendered. The process then moves to block  530 . 
     Returning to decision block  520 , if the source file does not include rendering instructions, process  500  also moves to block  530 . At block  530 , operations included in the source file are performed. The source file may include any type of operation. The operations in the source file may be performed based on input received from a user. 
       FIG. 6  is a flow diagram of an example process  600  for a server to process a multiview object associated with a web page. At block  605 , the multiview object is initialized. For example, an instance of a multiview container object class may be created. Instances of other objects included in the multiview container object class may also be created. At block  610 , the views associated with the multiview object are determined. At block  615 , an initial view of the determined views is rendered. The view may be rendered using data and procedures included in the multiview object. 
     At block  625 , an input associated with the currently rendered view is received. The input may be any type of data received from the view, such as input from the user, the client computer, and the like. At block  630 , operations associated with the currently rendered view are performed. At block  635 , a determination is made whether to navigate to another view. This determination may be made based on the navigational logic associated with the multiview object. It is to be understood that the navigational logic may include navigating back to the same view. 
     If the determination is made to navigate to another view, process  600  moves to block  640  where the current view is updated to the other view. The process then goes to block  645 . If the determination is made to not navigate to another view, the process moves to block  645 . At block  645 , process  600  returns to the web page execution. 
       FIG. 7  illustrates an example computing device  700  within which the described systems and methods can be either fully or partially implemented. Computing device  700  is only one example of a computing system and is not intended to suggest any limitation as to the scope of the use or functionality of the invention. 
     Computing device  700  can be implemented with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, thin clients, thick clients, hand-held or laptop devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, gaming consoles, distributed computing environments that include any of the above systems or devices, and the like. 
     The components of computing device  700  can include, but are not limited to, processor  702  (e.g., any of microprocessors, controllers, and the like), system memory  704 , input devices  706 , output devices  708 , and network devices  710 . 
     Computing device  700  typically includes a variety of computer-readable media. Such media can be any available media that is accessible by computing device  700  and includes both volatile and non-volatile media, removable and non-removable media. System memory  704  includes computer-readable media in the form of volatile memory, such as random access memory (RAM), and/or non-volatile memory, such as read only memory (ROM). A basic input/output system (BIOS), containing the basic routines that help to transfer information between elements within computing device  700 , such as during start-up, is stored in system memory  704 . System memory  704  typically contains data and/or program modules that are immediately accessible to and/or presently operated on by processor  702 . 
     System memory  704  can also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example, a hard disk drive may be included for reading from and writing to a non-removable, non-volatile magnetic media; a magnetic disk drive may be included for reading from and writing to a removable, non-volatile magnetic disk (e.g., a “floppy disk”); and an optical disk drive may be included for reading from and/or writing to a removable, non-volatile optical disk such as a CD-ROM, DVD, or any other type of optical media. 
     The disk drives and their associated computer-readable media provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for computing device  700 . It is to be appreciated that other types of computer-readable media which can store data that is accessible by computing device  700 , such as magnetic cassettes or other magnetic storage devices, flash memory cards, CD-ROM, digital versatile disks (DVD) or other optical storage, random access memories (RAM), read only memories (ROM), electrically erasable programmable read-only memory (EEPROM), and the like, can also be utilized to implement exemplary computing device  700 . Any number of program modules can be stored in system memory  704 , including by way of example, an operating system  720 , application programs  728 , and data  732 . 
     Computing device  700  can include a variety of computer-readable media identified as communication media. Communication media typically embodies computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, and other wireless media. Combinations of any of the above are also included within the scope of computer-readable media. 
     A user can enter commands and information into computing device  700  via input devices  706  such as a keyboard and a pointing device (e.g., a “mouse”). Other input devices  706  may include a microphone, joystick, game pad, controller, satellite dish, serial port, scanner, touch screen, touch pads, key pads, and/or the like. Output devices  708  may include a CRT monitor, LCD screen, speakers, printers, and the like. 
     Computing device  700  may include network devices  710  for connecting to computer networks, such as local area network (LAN), wide area network (WAN), and the like. 
     To further illustrate how the described systems and methods can be implemented, example codes are included below. 
     Table 1 includes an example declaration that may be included in a source file for a web page to declare a multiview object class named “PasswordRecovery”. Table 2 illustrates the properties that are associated with the “PasswordRecovery” class. 
     
       
         
               
             
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 Example code for PasswordRecovery. 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 &lt;asp:PasswordRecovery runat=server SubmitButtonText=“GetPassword” 
               
               
                   SubmitButtonType=Link /&gt; 
               
               
                   &lt;SubmitButtonStyle Backcolor=Orange/&gt; 
               
               
                   &lt;TitleTextStyle FontStyle=Bold/&gt; 
               
               
                   &lt;MailDefinition From=“PasswordGuru@MySite.com”Subject=“Your 
               
               
                 New Password” 
               
               
                   BodyFileName=“PasswordMail.txt”/&gt; 
               
               
                 &lt;/asp:PasswordRecovery&gt; 
               
               
                   
               
             
          
         
       
     
     
       
         
               
             
               
             
               
               
               
             
               
             
               
               
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
               
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
           
               
                 TABLE 2 
               
               
                   
               
               
                 Class definition. 
               
               
                   
               
             
             
               
                   
               
             
          
           
               
                 namespace System.Web.UI.WebControls. 
               
               
                 { 
               
               
                   public class PasswordRecovery: CompositeControl, 
               
               
                 INamingContainer 
               
               
                   { 
               
               
                   // Properties - Core functionality 
               
             
          
           
               
                     public String 
                 MembershipProvider 
                 { get; set; } 
               
               
                     public String 
                 SuccessPageUrl 
                 { get; set; } 
               
               
                     public String 
                 UserNameLabelText 
                 { get; set; } 
               
               
                     public String 
                 AnswerLabelText 
                 { get; set; } 
               
               
                     public String 
                 QuestionLabelText 
                 { get; set; } 
               
               
                     public String 
                 SuccessText 
                 { get; set; } 
               
             
          
           
               
                     public MailDefinition MailDefinition      { get; } 
               
             
          
           
               
                     public String 
                 SubmitButtonText 
                 { get; set; } 
               
             
          
           
               
                     public String 
                 SubmitButtonImageUrl { get; set; } 
               
               
                     public String 
                 UserName{ get; set; } 
               
               
                     public String 
                 Question { get; } 
               
               
                     public String 
                 Answer { get; } 
               
             
          
           
               
                   //Properties - Optional functionality within the control 
               
             
          
           
               
                     public String 
                 UserNameTitleText { get; set; } 
               
               
                     public String 
                 UserNameInstructionText{ get; set; } 
               
               
                     public String 
                 QuestionTitleText  { get; set; } 
               
               
                     public String 
                 QuestionInstructionText  { get; set; } 
               
               
                     public String 
                 HelpPageText { get; set; } 
               
               
                     public String 
                 HelpPageUrl { get; set; } 
               
             
          
           
               
                   //Properties - Validation and Error Messages 
               
             
          
           
               
                     public String 
                 EnableValidation   { get; set; } 
               
               
                     public String 
                 UserNameFailureText{ get; set; } 
               
               
                     public String 
                 QuestionFailureText { get; set; } 
               
               
                     public String 
                 UserNameRequiredErrorMessage{ get; set; } 
               
               
                     public String 
                 AnswerRequiredErrorMessage{ get; set; } 
               
               
                     public String 
                 GeneralFailureText  { get; set; } 
               
             
          
           
               
                   //Properties - Display Styles and Information 
               
               
                     public LoginTextLayout TextLayout { get; set; } 
               
               
                     public ButtonType SubmitButtonType{ get; set; } 
               
             
          
           
               
                     public Style 
                 SubmitButtonStyle  { get; } 
               
               
                     public Style 
                 LabelStyle   { get; } 
               
               
                     public Style 
                 TextBoxStyle { get; } 
               
               
                     public Style 
                 HyperlinkStyle{ get; } 
               
             
          
           
               
                     public Style 
                 InstructionTextStyle 
                 { get; } 
               
               
                     public Style 
                 TitleTextStyle 
                 { get; } 
               
               
                     public Style 
                 FailureTextStyle 
                 { get; } 
               
               
                     public Style 
                 SuccessTextStyle 
                 {get; set; } 
               
             
          
           
               
                     public ITemplate  UserNameTemplate 
                 { get; set; } 
               
               
                     public ITemplate  QuestionTemplate 
                 { get; set; } 
               
               
                     public ITemplate  SuccessTemplate 
                 { get; set; } 
               
             
          
           
               
                   // Events 
               
             
          
           
               
                     public CancelEventHandler VerifyingUser 
                 { add; remove; } 
               
               
                     public EventHandler UserLookupError 
                 { add; remove; } 
               
             
          
           
               
                     public CancelEventHandler VerifyingAnswer{ add; remove; } 
               
             
          
           
               
                     public EventHandler AnswerLookupError 
                 { add; remove; } 
               
             
          
           
               
                     public MailMessageEventHandler SendingMail{ add; remove; } 
               
               
                   // Methods 
               
               
                     protected virtual void OnVerifyingUser (CancelEventArgs) 
               
               
                     protected virtual void OnUserLookupError  (EventArgs) 
               
               
                     protected virtual void OnVerifyingAnswer  (CancelEventArgs) 
               
               
                     protected virtual void OnAnswerLookupError (EventArgs) 
               
               
                     protected virtual void OnSendingMail (MailMessageEventArgs) 
               
               
                   } 
               
               
                 } 
               
               
                   
               
             
          
         
       
     
     Below is information about the properties that the “PasswordRecovery” class may include. 
     
       
         
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
           
               
                   
               
             
             
               
                   Property: 
                 MembershipProvider 
               
               
                   Prototype: 
                 public String MembershipProvider { get; set; } 
               
               
                   Description: 
                 Determines the name of the Membership data 
               
             
          
           
               
                 provider to be used by the control. The default value of this property 
               
               
                 is emptystring at both design and runtime. If the property value is 
               
               
                 emptystring then the default provider specified in configuration will 
               
               
                 be used. If a developer sets the property value to emptystring or null 
               
               
                 it will continue to use the default provider as specified in configuration. 
               
               
                   Default Value:   MembershipProvider=“” 
               
             
          
           
               
                   Property: 
                 SuccessPageUrl 
               
               
                   Prototype: 
                 public String SuccessPageUrl { get; set; } 
               
               
                   Description 
                 Determines the page that the web site user will 
               
             
          
           
               
                 see after the password has been sent. 
               
               
                   Default Value   SuccessPageUrl=string.empty 
               
             
          
           
               
                   Property: 
                 UserNameLabelText 
               
               
                   Prototype: 
                 public String UserNameLabelText { get; set; } 
               
               
                   Description: 
                 Label text for UserName textbox. 
               
             
          
           
               
                   Default Value:   UserNameLabelText=“UserName:” 
               
             
          
           
               
                   Property: 
                 AnswerLabelText 
               
               
                   Prototype: 
                 public String AnswerLabelText { get; set; } 
               
               
                   Description: 
                 Label text for Answer textbox. 
               
             
          
           
               
                   Default Value:   AnswerLabelText=“Answer:” 
               
             
          
           
               
                   Property: 
                 QuestionLabelText 
               
               
                   Prototype: 
                 public String QuestionLabelText { get; set; } 
               
               
                   Description: 
                 Label text for Question textbox. 
               
             
          
           
               
                   Default Value:   QuestionLabelText=“Question:” 
               
             
          
           
               
                   Property: 
                 SuccessText 
               
               
                   Prototype: 
                 public String SuccessText { get; set; } 
               
               
                   Description: 
                 Text that is displayed if the developer has chose 
               
             
          
           
               
                 refresh as the success action and the user has been authorized to 
               
               
                 have their password sent to them. . 
               
               
                   Default Value:   SuccessText=“You password has been 
               
               
                 sent to you.” 
               
             
          
           
               
                   Property: 
                 MailDefinition 
               
               
                   Prototype: 
                 public MailDefinition MailDefinition { get; } 
               
               
                   Description: 
                 Collection of properties that determines the 
               
             
          
           
               
                 content and format of the email message to be sent with the new password. 
               
               
                   Default Value:   MailDefinition=null 
               
             
          
           
               
                   Property: 
                 SubmitButtonText 
               
               
                   Prototype: 
                 public String SubmitButtonText { get; set; } 
               
               
                   Description: 
                 Text that appears on the button that submits the form. 
               
             
          
           
               
                   Default Value:   SubmitButtonText=“Submit” 
               
             
          
           
               
                   Property: 
                 SubmitButtonImageUrl 
               
               
                   Prototype: 
                 public String SubmitButtonImageUrl { get; set; } 
               
               
                   Description: 
                 Provides the location for the image that will be 
               
             
          
           
               
                 used if an ImageButtonType is selected. . 
               
               
                   Default Value:   SubmitButtonImageUrl=string.empty 
               
             
          
           
               
                   Property: 
                 UserName 
               
               
                   Prototype: 
                 public String UserName { get; set; } 
               
               
                   Description: 
                 Value or the UserName textbox. 
               
             
          
           
               
                   Default Value:   UserName=string.empty 
               
             
          
           
               
                   Property: 
                 Question 
               
               
                   Prototype: 
                 public String Question { get; } 
               
               
                   Description: 
                 Value or the Question textbox. 
               
             
          
           
               
                   Default Value:   Question=string.empty 
               
             
          
           
               
                   Property: 
                 Answer 
               
               
                   Prototype: 
                 public String Answer { get; } 
               
               
                   Description: 
                 Value or the Answer textbox. 
               
             
          
           
               
                   Default Value:   Answer=string.empty 
               
             
          
           
               
                   Property: 
                 UserNameTitleText 
               
               
                   Prototype: 
                 public String UserNameTitleText { get; set; } 
               
               
                   Description: 
                 Title that is displayed in the initial view of the 
               
             
          
           
               
                 control when the user is entering their UserName for lookup. 
               
               
                   Default Value:   UserNameTitleText=“Forgot Your Password?” 
               
             
          
           
               
                   Property: 
                 UserNameInstructionText 
               
               
                   Prototype: 
                 public String UserNameInstructionText { get; set; } 
               
               
                   Description: 
                 Text that is displayed in the initial view of the 
               
             
          
           
               
                 control when the user is entering their UserName. 
               
               
                   Default Value:   UserNameInstructionText=“Enter your 
               
               
                 User name to receive your password.” 
               
             
          
           
               
                   Property: 
                 QuestionTitleText 
               
               
                   Prototype: 
                 public String QuestionTitleText { get; set; } 
               
               
                   Description: 
                 Title that is displayed in the initial view of the 
               
             
          
           
               
                 control when the user is confirming their identity by answering a 
               
               
                 predetermined question. 
               
               
                   Default Value:   QuestionTitleText=“Identity Confirmation” 
               
             
          
           
               
                   Property: 
                 QuestionInstructionText 
               
               
                   Prototype: 
                 public String QuestionInstructionText { get; set; } 
               
               
                   Description: 
                 Text that is displayed in the initial view of the 
               
             
          
           
               
                 control when the user is answering a question to confirm their identity. 
               
               
                   Default Value:   QuestionInstructionText=“Answer the 
               
               
                 following question to receive your password.” 
               
             
          
           
               
                   Property: 
                 HelpPageText 
               
               
                   Prototype 
                 public String HelpPageText { get; set; } 
               
               
                   Description: 
                 Text that is displayed as a link to the password 
               
             
          
           
               
                 help page. If set this link will be rendered on the UserName lookup 
               
               
                 view and on the Question confirmation view. The Help link will not 
               
               
                 be displayed on the confirmation view. If both the text and URL are 
               
               
                 not set then the link will not be rendered. 
               
               
                   Default Value:   HelpPageText=string.empty 
               
             
          
           
               
                   Property: 
                 HelpPageUrl 
               
               
                   Prototype: 
                 public String HelpPageUrl { get; set; } 
               
               
                   Description: 
                 Provides the Url for the password for the 
               
             
          
           
               
                 HelpPageText. Both the text and URL are required for them to be 
               
               
                 displayed on the lookup and question view. 
               
               
                   Default Value:   HelpPageUrl=string.empty 
               
             
          
           
               
                   Property: 
                 EnableValidation 
               
               
                   Prototype: 
                 public Bool EnableValidation { get; set; } 
               
               
                   Description: 
                 Turns off required field validators on the Login 
               
               
                 control. 
                   
               
             
          
           
               
                   Default Value:   EnableValidation=True 
               
             
          
           
               
                   Property: 
                 UserNameFailureText 
               
               
                   Prototype: 
                 public String UserNameFailureText { get; set; } 
               
               
                   Description: 
                 Determines the text that is displayed if the User 
               
             
          
           
               
                 name lookup fails. 
               
               
                   Default Value:   UserNameFailureText=“We were unable 
               
               
                 to access your information. Please try again.” 
               
             
          
           
               
                   Property: 
                 QuestionFailureText 
               
               
                   Prototype: 
                 public String QuestionFailureText { get; set; } 
               
               
                   Description: 
                 Determines the text that is displayed if the 
               
             
          
           
               
                 answer provided fails the check. 
               
               
                   Default Value: QuestionFailureText=“Your answer could not 
               
               
                 be verified. Please try again.” 
               
             
          
           
               
                   Property: 
                 UserNameRequiredErrorMessage 
               
             
          
           
               
                   Prototype: public String 
               
               
                 UserName1RequiredErrorMessage{get;set;} 
               
             
          
           
               
                   Description: 
                 The text that is displayed in the validation 
               
             
          
           
               
                 summary when the User name field is blank. 
               
               
                   Default Value: UserName1RequiredErrorMessage=“User name.” 
               
             
          
           
               
                   Property: 
                 AnswerRequiredErrorMessage 
               
             
          
           
               
                   Prototype: public String AnswerRequiredErrorMessage{ get; set; } 
               
             
          
           
               
                   Description: 
                 The text that is displayed in the validation 
               
             
          
           
               
                 summary when the Answer fields are blank. 
               
               
                   Default Value: 
               
               
                   AnswerRequiredErrorMessage=“Answer.” 
               
             
          
           
               
                   Property: 
                 GeneralFailureText 
               
               
                   Prototype: 
                 public String GeneralFailureText { get; set; } 
               
               
                   Description: 
                 Generic text that is displayed when the user 
               
             
          
           
               
                 information does not match and the password will not be sent by 
               
               
                 email. It uses the FailureTextStyle for formatting. 
               
               
                   Default Value:   PasswordRecoveryFailureText=“Your 
               
               
                 attempt to retrieve your password has failed. Please try again.” 
               
             
          
           
               
                   Property: 
                 TextLayout 
               
               
                   Prototype: 
                 public LoginTextLayout TextLayout { get; set; } 
               
               
                   Description: 
                 Specifies the text layout for the 
               
             
          
           
               
                 PasswordRecovery control from a list of available options. 
               
               
                   Default Value:   TextLayout=TextOnLeft 
               
             
          
           
               
                   Property: 
                 SubmitButtonType 
               
               
                   Prototype: 
                 public ButtonType SubmitButtonType { get; set; } 
               
               
                   Description: 
                 Specifies the type of button to be used. 
               
             
          
           
               
                   Default Value:   SubmitButtonType=Button 
               
             
          
           
               
                   Property: 
                 SubmitButtonStyle 
               
               
                   Prototype: 
                 public Style SubmitButtonStyle { get; } 
               
               
                   Description: 
                 The style settings to be used for the submit button. 
               
             
          
           
               
                   Default Value:   SubmitButtonStyle=null 
               
             
          
           
               
                   Property: 
                 LabelStyle 
               
               
                   Prototype: 
                 public Style LabelStyle { get; } 
               
               
                   Description: 
                 The style settings to be used for the UserName 
               
             
          
           
               
                 and Password labels. 
               
               
                   Default Value:   LabelStyle=null 
               
             
          
           
               
                   Property: 
                 TextBoxStyle 
               
               
                   Prototype: 
                 public Style TextBoxStyle { get; } 
               
               
                   Description: 
                 The style settings to be used for the User name 
               
             
          
           
               
                 and Password textboxes. 
               
               
                   Default Value:   TextBoxStyle=null 
               
             
          
           
               
                   Property: 
                 HyperlinkStyle 
               
               
                   Prototype: 
                 public Style HyperlinkStyle { get; } 
               
               
                   Description: 
                 The style settings to be used for all of the 
               
             
          
           
               
                 hyperlinks (new user, password reminder) in the control. 
               
               
                   Default Value:   HyperlinkStyle=null 
               
             
          
           
               
                   Property: 
                 InstructionTextStyle 
               
               
                   Prototype: 
                 public Style InstructionTextStyle { get; } 
               
               
                   Description: 
                 The style settings to be used for the Instruction Text. 
               
             
          
           
               
                   Default Value:   InstructionTextStyle=null 
               
             
          
           
               
                   Property: 
                 TitleTextStyle 
               
               
                   Prototype: 
                 public Style TitleTextStyle { get; } 
               
               
                   Description: 
                 The style settings to be used for the Title Text. 
               
             
          
           
               
                   Default Value:   TitleTextStyle=null 
               
             
          
           
               
                   Property: 
                 FailureTextStyle 
               
               
                   Prototype: 
                 public StyleFailureTextStyle { get; } 
               
               
                   Description: 
                 The style settings to be used for all of the error 
               
             
          
           
               
                 messages (e.g. membership api errors, required fields and regular 
               
               
                 expression validators). 
               
               
                   Default Value:   FailureTextStyle=null 
               
             
          
           
               
                   Property: 
                 SuccessTextStyle 
               
               
                   Prototype: 
                 public Style SuccessTextStyle { get; } 
               
               
                   Description: 
                 The style settings to be used for the success message. 
               
             
          
           
               
                   Default Value:   SuccessTextStyle=null 
               
             
          
           
               
                   Property: 
                 UserNameTemplate 
               
               
                   Prototype: 
                 public ITemplate UserNameTemplate { get; set; } 
               
               
                   Description: 
                 Determines the template to be used when 
               
             
          
           
               
                 customizing the layout and user interface for the UserName view of 
               
               
                 this control. 
               
               
                   Default Value:   UserNameTemplate=null 
               
             
          
           
               
                   Property: 
                 QuestionTemplate 
               
               
                   Prototype: 
                 public ITemplate QuestionTemplate { get; set; } 
               
               
                   Description: 
                 Determines the template to be used when 
               
             
          
           
               
                 customizing the layout and user interface for the Question view of 
               
               
                 this control. 
               
               
                   Default Value:   QuestionTemplate=null 
               
             
          
           
               
                   Property: 
                 SuccessTemplate 
               
               
                   Prototype: 
                 public ITemplate SuccessTemplate { get; set; } 
               
               
                   Description: 
                 Determines the template to be used when 
               
             
          
           
               
                 customizing the layout and user interface for the Success view of 
               
               
                 this control. 
               
               
                   Default Value:   SuccessTemplate=null 
               
               
                   
               
             
          
         
       
     
     Below is information about the events that the “PasswordRecovery” class may include. 
     
       
         
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
           
               
                   
               
             
             
               
                   Event: VerifyingUser 
               
             
          
           
               
                   Prototype: 
                 public CancelEventHandler VerifyingUser 
               
               
                 {add; remove;} 
                   
               
               
                   Description: 
                 Raised on the server after the user has submitted 
               
             
          
           
               
                 their information to the server but before the user information is sent 
               
               
                 to the membership api for confirmation. 
               
               
                   Event: UserLookupError 
               
             
          
           
               
                   Prototype: 
                 public EventHandler UserLookupError {add; remove;} 
               
               
                   Description: 
                 Raised on the server when the information 
               
             
          
           
               
                 provided by the user has failed to be confirmed via the membership api. 
               
               
                   Event: VerifyingAnswer 
               
             
          
           
               
                   Prototype: 
                 public CancelEventHandler VerifyingAnswer 
               
               
                 {add; remove;} 
                   
               
               
                   Description: 
                 Raised on the server after the user has submitted 
               
             
          
           
               
                 their information to the server but before the confirmation answer is 
               
               
                 sent to the membership api for confirmation. 
               
               
                   Event: AnswerLookupError 
               
             
          
           
               
                   Prototype: 
                 public EventHandler AnswerLookupError {add; 
               
               
                 remove;} 
                   
               
               
                   Description: 
                 Raised on the server when the confirmation 
               
             
          
           
               
                 answer provided by the user has failed to be confirmed via the membership  
               
               
                 api. 
               
               
                   Event: SendingMail 
               
             
          
           
               
                   Prototype: 
                 public MailMessageEventHandler SendingMail 
               
               
                 {add; remove;} 
                   
               
               
                   Description: 
                 Raised on the server after the user has been 
               
             
          
           
               
                 successfully lookedup or confirmed but before the mail message has 
               
               
                 been sent. 
               
               
                   
               
             
          
         
       
     
     Below is information about the methods that the “PasswordRecovery” class may include. 
     
       
         
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
               
               
             
               
             
           
               
                   
               
             
             
               
                   Method: 
                 OnVerifyingUser 
               
               
                   Prototype: 
                 protected virtual void 
               
             
          
           
               
                 OnVerifyingUser(CancelEventArgs e) 
               
             
          
           
               
                   Description: 
                 Called when the user has clicked the submit 
               
             
          
           
               
                 button on the UserName lookup screen. The default implementation 
               
               
                 raises the event. 
               
             
          
           
               
                   Method: 
                 OnUserLookupError 
               
               
                   Prototype: 
                 protected virtual void OnUserLookupError (EventArgs e) 
               
               
                   Description: 
                 Called when the submitted user information 
               
             
          
           
               
                 fails to be validated. The default implementation raises the event. 
               
             
          
           
               
                   Method: 
                 OnVerifyingAnswer 
               
               
                   Prototype: 
                 protected virtual void 
               
             
          
           
               
                 OnVerifyingAnswer(CancelEventArgs e) 
               
             
          
           
               
                   Description: 
                 Called when the user has clicked the submit 
               
             
          
           
               
                 button on the confirmation answer lookup screen. The default 
               
               
                 implementation raises the event. 
               
             
          
           
               
                   Method: 
                 OnAnswerLookupError 
               
               
                   Prototype: 
                 protected virtual void OnAnswerLookupError 
               
               
                 (EventArgs e) 
                   
               
               
                   Description: 
                 Called when the submitted user information 
               
             
          
           
               
                 fails to be validated. The default implementation raises the event. 
               
             
          
           
               
                   Method: 
                 OnSendingMail 
               
               
                   Prototype: 
                 protected virtual void OnSendingMail 
               
             
          
           
               
                 (MailMessageEventArgs e) 
               
             
          
           
               
                   Description: 
                 Called after the user&#39;s information has been 
               
             
          
           
               
                 validated and the send password process has been kicked off. The 
               
               
                 default implementation raises the event. 
               
               
                   
               
             
          
         
       
     
     Although the invention has been described in language specific to structural features and/or methodological steps, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features or steps described. Rather, the specific features and steps are disclosed as preferred forms of implementing the claimed invention.