ASP.NET菜单问题

时间:2010-01-15 15:32:09

标签: asp.net

我有一个asp.net菜单项列表:

<asp:Menu ID="Menu1" runat="server"  OnLoad="Menu1_Load">
    <Items>
        <asp:MenuItem Text="Create Member" Value="Create Member" NavigateUrl="~/create-member.aspx"></asp:MenuItem>
        <asp:MenuItem Text="Edit Member" Value="Edit Member" NavigateUrl="~/edit-member.aspx"></asp:MenuItem>
        <asp:MenuItem Text="Result Export" Value="Result Export" NavigateUrl="~/result-export.aspx"></asp:MenuItem>
        ...
        ...
    </Items>
</asp:Menu>

如何突出显示和删除当前所选MenuItem的超链接?

这是Josh答案的修改版本(我们不需要设置navigateUrl):

        foreach (MenuItem menuItem in Menu1.Items)
        {
            if (Request.PhysicalPath == Server.MapPath(menuItem.NavigateUrl))
            {
                menuItem.Selected = true;
                menuItem.Selectable = false;
                break;
            }
        }

1 个答案:

答案 0 :(得分:2)

如果您希望根据所访问的页面执行此服务器端,您只需进行该评估,然后找到相关项并将NavigateUrl属性设置为“”。根据您的CSS设置,您可能还需要指定一个特定的类来修改外观并为用户提供其位置的一些视觉反馈。

修改
可能最好的方法是使用您的Menu1_Load事件来针对NavigateUrl测试页面URL。如果匹配,请删除NavigateUrl设置。如果您没有使用~建立根,我可以使用:

foreach (var menuItem in Menu1.Items)  
{  
    if (Request.Path == menuItem.NavigateUrl)
    {
        menuItem.NavigateUrl = "";
        // Add any CSS modifications here
        break;
    }
}

绝对确定,您可以比较物理路径:

foreach (var menuItem in Menu1.Items)  
{  
    if (Request.PhysicalPath == Server.MapPath(menuItem.NavigateUrl))
    {
        menuItem.NavigateUrl = "";
        // Add any CSS modifications here
        break;
    }
}