Represents a menu item displayed in the Menu control. This class cannot be inherited.
Assembly: System.Web (in System.Web.dll)
Thetype exposes the following members.
|MenuItem()||Initializes a new instance of the class without menu text or a value.|
|MenuItem(String)||Initializes a new instance of the class using the specified menu text.|
|MenuItem(String, String)||Initializes a new instance of the class using the specified menu text and value.|
|MenuItem(String, String, String)||Initializes a new instance of the class using the specified menu text, value, and URL to an image.|
|MenuItem(String, String, String, String)||Initializes a new instance of the class using the specified menu text, value, image URL, and navigation URL.|
|MenuItem(String, String, String, String, String)||Initializes a new instance of the class using the specified menu text, value, image URL, navigation URL, and target.|
|ChildItems||Gets a MenuItemCollection object that contains the submenu items of the current menu item.|
|DataBound||Gets a value indicating whether the menu item was created through data binding.|
|DataItem||Gets the data item that is bound to the menu item.|
|DataPath||Gets the path to the data that is bound to the menu item.|
|Depth||Gets the level at which a menu item is displayed.|
|Enabled||Gets or sets a value that indicates whether the object is enabled, allowing the item to display a pop-out image and any child menu items.|
|ImageUrl||Gets or sets the URL to an image that is displayed next to the text in a menu item.|
|NavigateUrl||Gets or sets the URL to navigate to when the menu item is clicked.|
|Parent||Gets the parent menu item of the current menu item.|
|PopOutImageUrl||Gets or sets the URL to an image that is displayed in a menu item to indicate that the menu item has a dynamic submenu.|
|Selectable||Gets or sets a value that indicates whether the object can be selected, or is "clickable."|
|Selected||Gets or sets a value indicating whether the current menu item is selected in a Menu control.|
|SeparatorImageUrl||Gets or sets the URL to an image displayed at the bottom of a menu item to separate it from other menu items.|
|Target||Gets or sets the target window or frame in which to display the Web page content associated with a menu item.|
|Text||Gets or sets the text displayed for the menu item in a Menu control.|
|ToolTip||Gets or sets the ToolTip text for the menu item.|
|Value||Gets or sets a non-displayed value used to store any additional data about the menu item, such as data used for handling postback events.|
|ValuePath||Gets the path from the root menu item to the current menu item.|
|Equals(Object)||Determines whether the specified object is equal to the current object. (Inherited from Object.)|
|GetHashCode||Serves as the default hash function. (Inherited from Object.)|
|GetType||Gets the Type of the current instance. (Inherited from Object.)|
|ToString||Returns a string that represents the current object. (Inherited from Object.)|
|ICloneable::Clone||Creates a copy of the current object.|
|IStateManager::IsTrackingViewState||Infrastructure. Gets a value that indicates whether the object is saving changes to its view state.|
|IStateManager::LoadViewState||Infrastructure. Loads the menu item's previously saved view state.|
|IStateManager::SaveViewState||Infrastructure. Saves the view-state changes to an Object.|
|IStateManager::TrackViewState||Infrastructure. Instructs the object to track changes to its view state.|
A Menu control is made up of a hierarchy of menu items represented by objects. Each menu item has a read-only Depth property that specifies the level at which the menu item is displayed in the Menu control. Menu items at the top level (level 0) that do not have a parent menu item are called root menu items. A menu item that has a parent menu item is called a submenu item. All root menu items are stored in the Items collection. Submenu items are stored in a parent menu item's ChildItems collection. You can access a menu item's parent menu item by using the Parent property.
To create the menu items for a Menu control, use one of the following methods:
Use declarative syntax to create static menu items.
Bind the Menu control to a data source. When the Menu control is bound to a SiteMapDataSource control, objects are automatically created that correspond to the items in the data source. For other data sources, objects are also automatically created that match the hierarchy structure of data source; however, you must also use the DataBindings collection to define the menu item bindings that specify the binding relationship between a menu item and its corresponding data item.
The menu items are displayed in either a static menu or a dynamic menu, depending on its level. The static menu is always displayed in a Menu control. By default, the menu items at the top level (level 0) are displayed in the static menu. You can display additional menu levels (static submenus) within the static menu by setting the StaticDisplayLevels property. Menu items (if any) with a higher level than the value specified by the StaticDisplayLevels property are displayed in a dynamic submenu. A dynamic submenu appears only when the user positions the mouse pointer over the parent menu item that contains a dynamic submenu.
When the user clicks a menu item, the Menu control can either navigate to a linked Web page or simply post back to the server. If the NavigateUrl property of a menu item is set, the Menu control navigates to the linked page; otherwise, it posts the page back to the server for processing. By default, a linked page is displayed in the same window or frame as the Menu control. To display the linked content in a different window or frame, use the Target property of the Menu control.
Each menu item has a Text and a Value property. The value of the Text property is displayed in the Menu control, while the Value property is used to store any additional data about the menu item, such as data passed to the postback event associated with the menu item. If you set the Text property, but leave the Value property unset, the Value property is automatically set with the same value as the Text property. The opposite is also true. If you set the Value property, but not the Text property, the Text property is automatically set with the same value as the Value property.
Menu items at the same menu level must each have a unique value for the Value property; the Menu control cannot distinguish between different menu items at the same level that have the same value. In this scenario, if the user clicks a menu item that has a duplicate value, the menu item that appears first in the menu is selected.
To display a ToolTip when the user positions the mouse pointer over a menu item, set the item's ToolTip property.
A Menu control has several different types of menu items. You can control the style (such as font size and color) for the different menu item types by using the properties in the following table.
Menu item style property
The style settings for a dynamic menu item when the mouse pointer is positioned over it.
The style settings for an individual dynamic menu item.
The style settings for a dynamic menu.
The style settings for the currently selected dynamic menu item.
The style settings for a static menu item when the mouse pointer is positioned over it.
The style settings for an individual static menu item.
The style settings for a static menu.
The style settings for the currently selected static menu item.
Instead of setting the individual style properties, you can specify styles that are applied to menu items based on their level by using the style collections shown in the following table.
Level style collections
A collection of MenuItemStyle objects that control the style of the menu items based on their level.
A collection of MenuItemStyle objects that control the style of selected menu items based on their level.
A collection of MenuItemStyle objects that control the style of the submenu items based on their level.
The first style in the collection corresponds to the style of the menu items at the first depth level in the menu tree. The second style in the collection corresponds to the style of the menu items at the second depth level in the menu tree, and so on. This is most often used to generate table of contents-style navigation menus where menu items at a certain depth should have the same appearance, regardless of whether they have submenus.
If you use any of the level style collections listed in the previous table to define the style for the Menu control, these style settings override the individual menu item style properties.
In addition to customizing a menu item's style, you can also customize its appearance. You can specify custom images for the different parts for a menu item by setting the properties in the following table.
An optional image displayed next to the text of a menu item.
An optional image displayed in a menu item to indicate that the menu item has a dynamic submenu.
An optional image displayed at the bottom of a menu item to separate it from other menu items.
To determine whether a menu item is currently selected in a Menu control, use the Selected property. You can also determine whether a menu item is bound to data by using the DataBound property. If a menu item is bound to data, you can use the DataItem property to access the values of the data item bound to the menu item.
For a list of initial property values for an instance of the class, see the MenuItem constructor.
|Walkthrough: Controlling ASP.NET Menus Programmatically||Building ASP .NET Web Applications in Visual Studio|
|Walkthrough: Displaying a Menu on Web Pages||Building ASP .NET Web Applications in Visual Studio|
The following example demonstrates how to populate a Menu control with static objects using declarative syntax.
The following example demonstrates how to bind a Menu control to a SiteMapDataSource control. When bound to a data source, the Menu control automatically creates the objects. For this example to work correctly, you must copy the sample site map data below to a file named Web.sitemap.
The following is sample site map data for the previous example.
Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.