MenuItem Класс

Определение

Представляет элемент меню, отображаемый в элементе управления Menu. Этот класс не наследуется.

public ref class MenuItem sealed : ICloneable, System::Web::UI::IStateManager
public sealed class MenuItem : ICloneable, System.Web.UI.IStateManager
type MenuItem = class
    interface IStateManager
    interface ICloneable
Public NotInheritable Class MenuItem
Implements ICloneable, IStateManager
Наследование
MenuItem
Реализации

Примеры

В следующем примере показано, как заполнить Menu элемент управления статическими MenuItem объектами с помощью декларативного синтаксиса.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItem Declarative Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>MenuItem Declarative Example</h3>
    
      <!-- Use declarative syntax to create the   -->
      <!-- menu structure. Create submenu items   -->
      <!-- by nesting them within parent menu     -->
      <!-- items.                                 -->
      <asp:menu id="NavigationMenu"
        staticdisplaylevels="1"
        staticsubmenuindent="10" 
        orientation="Vertical" 
        target="_blank"  
        runat="server">

        <items>
          <asp:menuitem navigateurl="Home.aspx" 
            text="Home"
            imageurl="Images\Home.gif"
            popoutimageurl="Images\Popout.jpg"   
            tooltip="Home">
            <asp:menuitem navigateurl="Music.aspx"
              text="Music"
              popoutimageurl="Images\Popout.jpg"
              tooltip="Music">
              <asp:menuitem navigateurl="Classical.aspx" 
                text="Classical"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Classical"/>
              <asp:menuitem navigateurl="Rock.aspx"
                text="Rock"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Rock"/>
              <asp:menuitem navigateurl="Jazz.aspx"
                text="Jazz"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Jazz"/>
            </asp:menuitem>
            <asp:menuitem navigateurl="Movies.aspx"
              text="Movies"
              popoutimageurl="Images\Popout.jpg"              
              tooltip="Movies">
              <asp:menuitem navigateurl="Action.aspx"
                text="Action"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Action"/>
              <asp:menuitem navigateurl="Drama.aspx"
                text="Drama"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Drama"/>
              <asp:menuitem navigateurl="Musical.aspx"
                text="Musical"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Musical"/>
            </asp:menuitem>
          </asp:menuitem>
        </items>
      
      </asp:menu>

    </form>
  </body>
</html>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>MenuItem Declarative Example</title>
</head>
<body>
    <form id="form1" runat="server">
    
      <h3>MenuItem Declarative Example</h3>
    
      <!-- Use declarative syntax to create the   -->
      <!-- menu structure. Create submenu items   -->
      <!-- by nesting them within parent menu     -->
      <!-- items.                                 -->
      <asp:menu id="NavigationMenu"
        staticdisplaylevels="1"
        staticsubmenuindent="10" 
        orientation="Vertical" 
        target="_blank"  
        runat="server">

        <items>
          <asp:menuitem navigateurl="Home.aspx" 
            text="Home"
            imageurl="Images\Home.gif"
            popoutimageurl="Images\Popout.jpg"   
            tooltip="Home">
            <asp:menuitem navigateurl="Music.aspx"
              text="Music"
              popoutimageurl="Images\Popout.jpg"
              tooltip="Music">
              <asp:menuitem navigateurl="Classical.aspx" 
                text="Classical"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Classical"/>
              <asp:menuitem navigateurl="Rock.aspx"
                text="Rock"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Rock"/>
              <asp:menuitem navigateurl="Jazz.aspx"
                text="Jazz"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Jazz"/>
            </asp:menuitem>
            <asp:menuitem navigateurl="Movies.aspx"
              text="Movies"
              popoutimageurl="Images\Popout.jpg"              
              tooltip="Movies">
              <asp:menuitem navigateurl="Action.aspx"
                text="Action"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Action"/>
              <asp:menuitem navigateurl="Drama.aspx"
                text="Drama"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Drama"/>
              <asp:menuitem navigateurl="Musical.aspx"
                text="Musical"
                separatorimageurl="Images\Separator.jpg"
                tooltip="Musical"/>
            </asp:menuitem>
          </asp:menuitem>
        </items>
      
      </asp:menu>

    </form>
  </body>
</html>

В следующем примере показано, как привязать Menu элемент управления к элементу SiteMapDataSource управления. При привязке к источнику Menu данных элемент управления автоматически создает MenuItem объекты. Для правильной работы этого примера необходимо скопировать приведенные ниже данные карты сайта в файл с именем Web.sitemap.


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

  <!-- For the hover styles of the Menu control to  -->
  <!-- work correctly, you must include this head   -->
  <!-- element.                                     -->
  <head runat="server">
    <title>Menu DataBinding Example</title>
</head>

  <body>
    <form id="form1" runat="server">
    
      <h3>Menu DataBinding Example</h3>
    
      <!-- Bind the Menu control to a SiteMapDataSource control.  -->
      <asp:menu id="NavigationMenu"
        disappearafter="2000"
        staticdisplaylevels="2"
        staticsubmenuindent="10" 
        orientation="Vertical"
        font-names="Arial" 
        target="_blank"
        datasourceid="MenuSource"   
        runat="server">
        
        <staticmenuitemstyle backcolor="LightSteelBlue"
          forecolor="Black"/>
        <statichoverstyle backcolor="LightSkyBlue"/>
        <dynamicmenuitemstyle backcolor="Black"
          forecolor="Silver"/>
        <dynamichoverstyle backcolor="LightSkyBlue"
          forecolor="Black"/>

      </asp:menu>
      
      <asp:SiteMapDataSource id="MenuSource"
        runat="server"/>        

    </form>
  </body>
</html>

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >

  <!-- For the hover styles of the Menu control to  -->
  <!-- work correctly, you must include this head   -->
  <!-- element.                                     -->
  <head runat="server">
    <title>Menu DataBinding Example</title>
</head>

  <body>
    <form id="form1" runat="server">
    
      <h3>Menu DataBinding Example</h3>
    
      <!-- Bind the Menu control to a SiteMapDataSource control.  -->
      <asp:menu id="NavigationMenu"
        disappearafter="2000"
        staticdisplaylevels="2"
        staticsubmenuindent="10" 
        orientation="Vertical"
        font-names="Arial" 
        target="_blank"
        datasourceid="MenuSource"   
        runat="server">
        
        <staticmenuitemstyle backcolor="LightSteelBlue"
          forecolor="Black"/>
        <statichoverstyle backcolor="LightSkyBlue"/>
        <dynamicmenuitemstyle backcolor="Black"
          forecolor="Silver"/>
        <dynamichoverstyle backcolor="LightSkyBlue"
          forecolor="Black"/>

      </asp:menu>
      
      <asp:SiteMapDataSource id="MenuSource"
        runat="server"/>        

    </form>
  </body>
</html>

Ниже приведен пример данных карты сайта для предыдущего примера.

<siteMap>

<siteMapNode url="~\Home.aspx"

title="Home"

description="Home">

<siteMapNode url="~\Music.aspx"

title="Music"

description="Music">

<siteMapNode url="~\Classical.aspx"

title="Classical"

description="Classical"/>

<siteMapNode url="~\Rock.aspx"

title="Rock"

description="Rock"/>

<siteMapNode url="~\Jazz.aspx"

title="Jazz"

description="Jazz"/>

</siteMapNode>

<siteMapNode url="~\Movies.aspx"

title="Movies"

description="Movies">

<siteMapNode url="~\Action.aspx"

title="Action"

description="Action"/>

<siteMapNode url="~\Drama.aspx"

title="Drama"

description="Drama"/>

<siteMapNode url="~\Musical.aspx"

title="Musical"

description="Musical"/>

</siteMapNode>

</siteMapNode>

</siteMap>

Комментарии

Элемент Menu управления состоит из иерархии элементов меню, представленных объектами MenuItem . Каждый пункт меню имеет свойство только Depth для чтения, указывающее уровень, на котором элемент меню отображается в элементе Menu управления. Пункты меню верхнего уровня (уровень 0), у которых нет родительского пункта меню, называются корневыми элементами меню. Элемент меню с родительским элементом меню называется элементом подменю. Все элементы корневого Items меню хранятся в коллекции. Элементы подменю хранятся в коллекции родительского ChildItems элемента меню. Доступ к родительскому элементу меню можно получить с помощью Parent свойства.

Примечание

Коллекции Items содержат ChildItems только элементы меню для следующего уровня вниз. Чтобы получить доступ к пунктам меню вниз по дереву меню, используйте ChildItems свойство последующего пункта меню.

Чтобы создать элементы меню для Menu элемента управления, используйте один из следующих методов:

Используйте декларативный синтаксис для создания статических пунктов меню.

Используйте конструктор для динамического MenuItem создания новых экземпляров класса. Затем эти MenuItem объекты можно добавить в коллекцию или ChildItems коллекциюItems.

Привяжите Menu элемент управления к источнику данных. Когда элемент Menu управления привязан к SiteMapDataSource элементу управления, объекты создаются автоматически, MenuItem соответствующие элементам в источнике данных. Для других источников данных объекты также создаются автоматически, MenuItem соответствующие структуре иерархии источника данных. Однако необходимо также использовать DataBindings коллекцию для определения привязок элементов меню, определяющих связь привязки между элементом меню и соответствующим элементом данных.

Элементы меню отображаются в статическом меню или динамическом меню в зависимости от его уровня. Статическое меню всегда отображается в элементе Menu управления. По умолчанию элементы меню верхнего уровня (уровень 0) отображаются в статическом меню. Вы можете отобразить дополнительные уровни меню (статические подменю) в статическом меню, задав StaticDisplayLevels свойство. Пункты меню (если таковые имеются) с более высоким уровнем, чем значение, указанное StaticDisplayLevels свойством, отображаются в динамическом подменю. Динамический подменю отображается только в том случае, если пользователь размещает указатель мыши над родительским элементом меню, содержащим динамический подменю.

Когда пользователь щелкает пункт меню, Menu элемент управления может перейти на связанную веб-страницу или просто опубликовать его на сервере. NavigateUrl Если свойство элемента меню задано, Menu элемент управления переходит на связанную страницу; в противном случае она отправляет страницу обратно на сервер для обработки. По умолчанию связанная страница отображается в том же окне или фрейме Menu , что и элемент управления. Чтобы отобразить связанное содержимое в другом окне или фреймеMenu, используйте Target свойство элемента управления.

Примечание

Это Menu.Target свойство влияет на каждый пункт меню в элементе управления. Чтобы указать окно или рамку для отдельного элемента меню, задайте Target свойство MenuItem объекта напрямую.

Каждый пункт меню имеет свойство Text и Value свойство. Значение Text свойства отображается в элементе Menu управления, а Value свойство используется для хранения дополнительных данных об элементе меню, таких как данные, передаваемые в событие обратной передачи, связанное с элементом меню. Если задать Text свойство, но оставить Value свойство не настроенным, свойство автоматически задается с тем же значением, Value что и Text свойство. Обратное также верно. Если задать Value свойство, но не Text свойство, свойство автоматически устанавливается с тем же значением, Text что и Value свойство.

Примечание

Элементы меню на одном уровне меню должны иметь уникальное значение для Value свойства. Элемент Menu управления не может различать разные пункты меню на одном уровне с одинаковым значением. В этом сценарии, если пользователь щелкает пункт меню с повторяющимся значением, выбирается пункт меню, который отображается первым в меню.

Чтобы отобразить подсказку, когда пользователь размещает указатель мыши над элементом меню, задайте свойство элемента ToolTip .

Элемент Menu управления имеет несколько различных типов элементов меню. Вы можете управлять стилем (например, размером и цветом шрифта) для различных типов элементов меню с помощью свойств в следующей таблице.

Свойство стиля элемента меню Описание
DynamicHoverStyle Параметры стиля для динамического элемента меню, когда указатель мыши располагается над ним.
DynamicMenuItemStyle Параметры стиля для отдельного элемента динамического меню.
DynamicMenuStyle Параметры стиля для динамического меню.
DynamicSelectedStyle Параметры стиля для выбранного в данный момент динамического пункта меню.
StaticHoverStyle Параметры стиля для статического пункта меню, когда указатель мыши располагается над ним.
StaticMenuItemStyle Параметры стиля для отдельного элемента статического меню.
StaticMenuStyle Параметры стиля для статического меню.
StaticSelectedStyle Параметры стиля для выбранного в данный момент статического пункта меню.

Вместо настройки отдельных свойств стиля можно указать стили, применяемые к пунктам меню на основе их уровня, с помощью коллекций стилей, показанных в следующей таблице.

Коллекции стилей уровня Описание
LevelMenuItemStyles Коллекция MenuItemStyle объектов, управляющих стилем элементов меню на основе их уровня.
LevelSelectedStyles Коллекция MenuItemStyle объектов, управляющих стилем выбранных пунктов меню на основе их уровня.
LevelSubMenuStyles Коллекция MenuItemStyle объектов, управляющих стилем элементов подменю на основе их уровня.

Первый стиль в коллекции соответствует стилю пунктов меню на первом уровне глубины в дереве меню. Второй стиль в коллекции соответствует стилю пунктов меню на втором уровне глубины в дереве меню и т. д. Чаще всего это используется для создания меню навигации в стиле содержимого, где элементы меню на определенной глубине должны иметь одинаковый внешний вид, независимо от того, имеют ли они подменю.

Примечание

Если вы используете любую из коллекций стилей уровня, перечисленных в предыдущей таблице, чтобы определить стиль элемента Menu управления, эти параметры стиля переопределяют свойства стиля отдельного элемента меню.

Помимо настройки стиля элемента меню, можно также настроить его внешний вид. Вы можете указать пользовательские изображения для различных частей для пункта меню, задав свойства в следующей таблице.

Свойство Image Описание
ImageUrl Необязательное изображение, отображаемое рядом с текстом элемента меню.
PopOutImageUrl Необязательное изображение, отображаемое в пункте меню, указывающее, что элемент меню содержит динамический подменю.
SeparatorImageUrl Необязательное изображение, отображаемое в нижней части пункта меню, чтобы отделить его от других пунктов меню.

Чтобы определить, выбран ли элемент меню в элементе Menu управления, используйте Selected это свойство. Вы также можете определить, привязан ли элемент меню к данным с помощью DataBound свойства. Если элемент меню привязан к данным, можно использовать DataItem свойство для доступа к значениям элемента данных, привязанного к элементу меню.

Список начальных значений свойств для экземпляра класса MenuItem см. в описании конструктора MenuItem.

Конструкторы

MenuItem()

Инициализирует новый экземпляр класса MenuItem без текста меню или значения.

MenuItem(String)

Инициализирует новый экземпляр класса MenuItem, используя указанный текст меню.

MenuItem(String, String)

Инициализирует новый экземпляр класса MenuItem, используя указанный текст меню и значение.

MenuItem(String, String, String)

Инициализирует новый экземпляр класса MenuItem, используя указанный текст меню, значение и URL-адрес изображения.

MenuItem(String, String, String, String)

Инициализирует новый экземпляр класса MenuItem, используя указанный текст меню, значение, URL-адрес изображения и URL-адрес перехода.

MenuItem(String, String, String, String, String)

Инициализирует новый экземпляр класса MenuItem, используя указанный текст меню, значение, URL-адрес изображения, URL-адрес перехода и цель.

Свойства

ChildItems

Возвращает объект MenuItemCollection, содержащий пункты подменю для текущего пункта меню.

DataBound

Возвращает значение, определяющее, был ли данный пункт меню создан при помощи привязки данных.

DataItem

Возвращает элемент данных, привязанный к пункту меню.

DataPath

Возвращает путь к данным, привязанным к пункту меню.

Depth

Возвращает уровень отображения пункта меню.

Enabled

Получает или задает значение, показывающее, включен ли объект MenuItem, что позволяет элементу отображать всплывающее изображение и любые дочерние пункты меню.

ImageUrl

Получает или задает URL-адрес изображения, которое отображается рядом с текстом пункта меню.

NavigateUrl

Получает или задает URL-адрес для перехода при выборе пункта меню.

Parent

Возвращает родительский пункт меню для текущего пункта меню.

PopOutImageUrl

Получает или задает URL-адрес изображения, которое отображается в пункте меню и показывает, что пункт меню имеет динамическое подменю.

Selectable

Получает или задает значение, позволяющее определить, можно ли выделить объект MenuItem, т.е. является ли он "активным".

Selected

Получает или задает значение, позволяющее определить, выбран ли текущий пункт меню в элементе управления Menu.

SeparatorImageUrl

Получает или задает URL-адрес изображения, которое отображается под пунктом меню и отделяет его от остальных пунктов меню.

Target

Получает или задает целевое окно или фрейм, для отображения содержимого веб-страницы, связанной с пунктом меню.

Text

Получает или задает текст, отображаемый для пункта меню в элементе управления Menu.

ToolTip

Получает или задает текст подсказки для пункта меню.

Value

Получает или задает неотображаемое значение, используемое для хранения любых дополнительных данных о пункте меню, например, данных, используемых для обработки событий обратной передачи.

ValuePath

Возвращает путь из корневого пункта меню к текущему пункту меню.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

ICloneable.Clone()

Создает копию текущего объекта MenuItem.

IStateManager.IsTrackingViewState

Возвращает значение, указывающее, сохраняет ли объект MenuItem изменения в состоянии просмотра.

IStateManager.LoadViewState(Object)

Загружает сохраненное ранее состояние представления пункта меню.

IStateManager.SaveViewState()

Сохраняет изменения состояния представления в объекте Object.

IStateManager.TrackViewState()

Выдает объекту MenuItem инструкции отслеживать изменения в его состоянии представления.

Применяется к

См. также раздел