Добавить TextBox в меню ASP.Net - PullRequest
2 голосов
/ 09 декабря 2011

Прямо сейчас у меня есть следующий код:

<div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
                <Items>
                    <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/>
                    <asp:MenuItem NavigateUrl="~/CreatePost.aspx" Text="Create Post"/>
                    <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/>
                </Items>
            </asp:Menu>
        </div>

Это создает кнопки в моей строке меню.Тем не менее, я хотел бы добавить что-то, что не является кнопкой в ​​этой строке меню.Я хотел бы добавить текстовое поле.Если я пытаюсь добавить текстовое поле между тегами <Items>, это выдает ошибку.Можно ли этого достичь?

Ответы [ 2 ]

3 голосов
/ 09 декабря 2011

Вы можете использовать шаблоны элементов для обеспечения индивидуального оформления элементов меню.Например:

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
    IncludeStyleBlock="false" Orientation="Horizontal">
    <Items>
        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
        <asp:MenuItem NavigateUrl="~/CreatePost.aspx" Text="Create Post" />
        <asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
    </Items>
    <StaticItemTemplate>
        <%-- Custom menu item content --%>
        <asp:Label runat="server" Text='<%# Eval("Text") %>' />
        <asp:TextBox runat="server" Text='<%# Eval("NavigateUrl") %>' />
    </StaticItemTemplate>
</asp:Menu>

, который может дать результат, подобный следующему:

example result of menu item templating

Я предлагаю вам прочитать о шаблонных параметрах элемента управления Menu.


Редактировать в ответ на комментарий:

Я думаю, что выборочное применение шаблона после его определения невозможно.Вам, вероятно, понадобится другое меню с другим шаблоном, чтобы выглядеть иначе.Или вы могли бы по-разному выглядеть для разных элементов меню, используя условия для свойства Visible, такие как:

<StaticItemTemplate>
    <asp:Label runat="server" Text='<%# Eval("Text") %>' />
    <%-- Display textbox only for the Home menu item --%>
    <asp:TextBox runat="server" Text='<%# Eval("NavigateUrl") %>'
        Visible='<%# (Eval("Text") == "Home") %>' />
</StaticItemTemplate>

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

1 голос
/ 09 декабря 2011

Единственный способ, который приходит мне в голову, - это создание пользовательского элемента управления меню, основанного на элементе управления ASP.NET.Затем вы должны переопределить метод Render или CreateChildren.

Однако многие разработчики теперь используют простые ul - li элементы HTML для создания меню.Таким образом, вы можете легко достичь любой гибкости.Почему бы вам не использовать их?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...