突出显示 ASP.NET Web 应用程序中的菜单栏

发布于 2024-11-06 04:14:00 字数 1142 浏览 1 评论 0原文

我使用 ASP.NET Visual Studio 2010 和母版页构建了一个 Web 应用程序。正如您将看到的,该项目为我们提供了一个默认的菜单栏项。我在这些菜单栏上列出了 5 个页面(链接)。现在,当用户转到特定页面时,我想突出显示该菜单栏链接。我不知道该怎么做:(

我在母版页代码后面尝试了这个,但它也不起作用:

 foreach (MenuItem item in NavigationMenu.Items)
        {
            var navigateUrlParams = item.NavigateUrl.Split('/');
            if (Request.Url.AbsoluteUri.IndexOf(navigateUrlParams[navigateUrlParams.Length - 1]) != -1)
            {
                item.Selected = true;
            }
        }

在我的标记视图中我有这个:

 <div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"  OnMenuItemClick="NavigationMenu_MenuItemClick">
                <Items>
                    <asp:MenuItem Text="Test1"/>
                     <asp:MenuItem Text="Test2"/>
                     <asp:MenuItem  Text="Test3"/>

                </Items>
            </asp:Menu>
        </div>

所以基本上每当用户来到 Test1.aspx 页面时,我想要菜单项我应该如何做,

谢谢您的帮助!

I built a web application using ASP.NET Visual Studio 2010 with Master Pages. As you will see that the project gives us a default menu bar item. I have 5 pages (links) listed on those menu bars. Now when a user goes to a specific page I want to highlight that menu bar link. I dont know how to do that :(

I tried this on the Master Page Code Behind but it didnt work too:

 foreach (MenuItem item in NavigationMenu.Items)
        {
            var navigateUrlParams = item.NavigateUrl.Split('/');
            if (Request.Url.AbsoluteUri.IndexOf(navigateUrlParams[navigateUrlParams.Length - 1]) != -1)
            {
                item.Selected = true;
            }
        }

And in my mark up view I have this:

 <div class="clear hideSkiplink">
            <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"  OnMenuItemClick="NavigationMenu_MenuItemClick">
                <Items>
                    <asp:MenuItem Text="Test1"/>
                     <asp:MenuItem Text="Test2"/>
                     <asp:MenuItem  Text="Test3"/>

                </Items>
            </asp:Menu>
        </div>

So basically whenever user comes to Test1.aspx page, I want the menu item of Test1 to be highlighted. How should I do that?

Any help will be appreciated! Thank you...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心凉怎暖 2024-11-13 04:14:00

使用CSS链接类来实现这一点:

http://www.w3schools.com/css/sel_active.asp

除非您“需要”对这些链接项执行一些编程操作,否则请改用 HTML 锚链接。将它们创建为列表项:

<ul class="menu">
    <li>
        <a href="~/Home" id="link1" title="First Link" runat="server">Link 1</a>
    </li>
</ul>

我所说的是询问此处是否需要控件(不熟悉您的项目),并尽可能保持标记简单。

Use CSS link classes to implement this:

http://www.w3schools.com/css/sel_active.asp

And unless you "need" to do something programmatic against these link items, use HTML anchor links instead. Create them as list items:

<ul class="menu">
    <li>
        <a href="~/Home" id="link1" title="First Link" runat="server">Link 1</a>
    </li>
</ul>

What I'm saying is to question if controls are necessary here (not familiar with your project), and to keep the markup simple whenever possible.

源来凯始玺欢你 2024-11-13 04:14:00

首先确保您的菜单项都具有 Id 属性

在页面加载处理程序后面的母版页代码中执行类似以下

if (!Page.IsPostBack)
{
      if(Page is Default)
           liHome.Attributes["class"] += " active";

}

操作 在本例中,您将检查当前查看的页面的“类型”并将其附加到类属性中当前导航的链接。你可以为 active 定义一个 css 属性,例如

.active
{
    background-color: Red;
}

First make sure that your menu items all have an Id property

In your master page code behind in the page Load handler do something like this

if (!Page.IsPostBack)
{
      if(Page is Default)
           liHome.Attributes["class"] += " active";

}

In this example you would check the "type" of the currently viewed page and append the to the class attribute for the currently navigated link. you could define a css property for active something like

.active
{
    background-color: Red;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文