2011-12-09 9 views
2

にテキストボックスを追加します。今、私は次のコードを持っている:はASP.Netメニュー

<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>タグの間にテキストボックスを追加しようとすると、エラーが表示されます。達成することは可能ですか?

答えて

1

唯一の方法は、ASP.NETのメニューコントロールから派生したカスタムメニューコントロールを作成することです。次に、RenderまたはCreateChildrenメソッドをオーバーライドする必要があります。

しかし、多くの開発者は、単純なul-li HTML要素を使用してメニューを作成しています。このようにして、あらゆる種類の柔軟性を簡単に達成することができます。なぜあなたはそれらを使用しないのですか?

3

アイテムテンプレートを使用して、メニューアイテムをカスタム表示することができます。

これと同様の結果を生成することができます
<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コントロールのオプションをテンプレート化について読むことをお勧め。コメントへの応答で


編集

は、私はそれが定義されると、選択テンプレートを適用することはできないと思います。異なった見た目をするためには、テンプレートが異なる別のメニューが必要になるでしょう。あなたが特定のメニュー項目の全コンテンツを交換するために、この方法を非表示にしたり、全体のパネルまたはプレースホルダを示すことができ

<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> 

:または次のようなVisibleプロパティの条件を使用してある程度異なるメニュー項目の異なる外観を達成できます。

+0

これを適用して、メニュー項目のいずれかですべてを行うようにしていますか? – user489041

+0

@ user489041私は自分の答えを更新しました。 – famousgarkin

関連する問題