vb.net 根据用户是否登录在asp.net中隐藏或显示菜单项

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21563901/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-17 16:40:03  来源:igfitidea点击:

Hiding or showing menu item in asp.net based on whether user is logged in or not

asp.netvb.net

提问by Kevin

I need to make a change to a website's menu system which is written in asp.net and vb.net. I would like to hide the menu item (Value="ProdinTran") from being seen when a user is not logged into the site. Can you show me what I need to add to this code to do this?

我需要对用asp.net 和vb.net 编写的网站菜单系统进行更改。我想在用户未登录站点时隐藏菜单项 (Value="ProdinTran")。你能告诉我我需要在这段代码中添加什么来做到这一点吗?

Here is the current code:

这是当前的代码:

<%@ Master Language="VB" AutoEventWireup="false" CodeFile="Site.Master.vb" Inherits="Site" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
    <title></title>
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
    <asp:ContentPlaceHolder ID="HeadContent" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form runat="server">
    <div class="page">
        <div class="header">
            <div class="title">
                <h1>
                     Portal
                </h1>
            </div>
            <div class="loginDisplay">
                <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false">
                    <AnonymousTemplate>
                        [ <a href="~/Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ]
                    </AnonymousTemplate>
                    <LoggedInTemplate>
                        Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" />&nbsp;</span>!&nbsp; 
                        [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/"/> ]
                    </LoggedInTemplate>
                </asp:LoginView>
            </div>
            <div class="clear hideSkiplink">
                <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" DisappearAfter="1000">
                    <Items>
                        <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home">
                            <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Portal Home Page" 
                                Value="Portal Home Page"></asp:MenuItem>
                            <asp:MenuItem NavigateUrl="http://www.something.com/index.php?option=com_content&view=article&id=212&Itemid=28" Text="About" 
                                Value="About" Target="_parent"></asp:MenuItem>
                            <asp:MenuItem NavigateUrl="http://www.something.com" 
                                Text="Web Site" 
                                ToolTip="Home Page" Value="Home" Target="_parent">
                            </asp:MenuItem>
                        </asp:MenuItem>
                       <asp:MenuItem Text="Customer" Value="Customer" 
                            ToolTip="Registered customers" NavigateUrl="~/Customer.aspx?mySelect=0">
                             <asp:MenuItem NavigateUrl="~/Customer.aspx?mySelect=0"
                                Text="Customer Home Page" Value="Chp">
                             </asp:MenuItem>
                             <asp:MenuItem NavigateUrl="~/Customer.aspx?mySelect=2" 
                                Text="Open Orders" 
                                ToolTip="View your open orders" Value="OpenOrders">
                            </asp:MenuItem>
                              <asp:MenuItem NavigateUrl="~/Customer.aspx?mySelect=3" 
                                Text="Canceled Orders" 
                                ToolTip="View your canceled orders" Value="Canceled">
                            </asp:MenuItem>
                            <asp:MenuItem NavigateUrl="~/Customer.aspx?mySelect=4" 
                                Text="Shipped Orders" 
                                ToolTip="View your shipped orders" Value="Shipped">
                            </asp:MenuItem>
                            <asp:MenuItem Text="Product in Transit" ToolTip="Product in Transit" Value="ProdinTran" NavigateUrl="http://www.google.com">
                            </asp:MenuItem>
                            <asp:MenuItem NavigateUrl="~/Customer.aspx?mySelect=5" 
                                Text="Invoices" 
                                ToolTip="View your invoices" Value="Invoices">
                            </asp:MenuItem>
                            <asp:MenuItem NavigateUrl="~/Customer.aspx?mySelect=6" 
                                Text="Credit Memos" 
                                ToolTip="View your credit memos" Value="Credits">
                            </asp:MenuItem>
                                <asp:MenuItem NavigateUrl="~/Account/ChangePassword.aspx" 
                                Text="Change Password" ToolTip="Change your password." 
                                Value="Change">
                            </asp:MenuItem>
                      </asp:MenuItem>
                        <asp:MenuItem Text="Help &amp; Information" 
                            ToolTip="Holidays, Shipping, Passwords" Value="Help">
                             <asp:MenuItem Text="Terms &amp; Conditions" 
                                ToolTip="View Terms &amp; Conditions" 
                                Value="Terms" NavigateUrl="http://www.something.com/terms.html" 
                                 Target="_parent">
                                </asp:MenuItem>
                           <asp:MenuItem Text="Holiday Schedule" 
                                ToolTip="View Holiday Schedule" 
                                Value="Holiday" NavigateUrl="~/Holiday.aspx"></asp:MenuItem>
                            <asp:MenuItem Text="Shipping Company Information" 
                                ToolTip="View information on shipping companies" 
                                Value="Shipping" NavigateUrl="~/Shipping.aspx"></asp:MenuItem>
                            <asp:MenuItem NavigateUrl="~/Forgot.aspx" Text="Reset My Password" 
                                ToolTip="Reset your password." Value="Reset">
                            </asp:MenuItem>
                            <asp:MenuItem NavigateUrl="~/HowDoI.aspx" Text="How Do I Access my info?" 
                                ToolTip="See how to register, logon, reset your password, change your password and access your account." Value="Retrieve">
                            </asp:MenuItem>
                            <asp:MenuItem Text="Register                " 
                                ToolTip="Click here to register on this site" 
                                Value="Register2" NavigateUrl="~/Account/Register.aspx"></asp:MenuItem>
                        </asp:MenuItem>
            <asp:MenuItem NavigateUrl="~/Remnant1.aspx" Text="Remnants" 
                                Value="Remnants"></asp:MenuItem>
                    </Items>
                </asp:Menu>
            </div>
        </div>
        <div class="main">
            <asp:ContentPlaceHolder ID="MainContent" runat="server"/>
        </div>
        <div class="clear">
        </div>
    </div>
    <div class="footer">
 &copy;&nbsp;2014 - All Rights Reserved<br />
    </div>
    </form>
</body>
</html>

Thank you in advance for your help!

预先感谢您的帮助!

采纳答案by Kevin

VB.NET placed in Site.master.vb:

VB.NET 放置在 Site.master.vb 中:

Partial Class Site
    Inherits System.Web.UI.MasterPage
    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        If Not HttpContext.Current.User.Identity.IsAuthenticated Then
            NavigationMenu.FindItem("Customer").ChildItems.Remove(NavigationMenu.FindItem("Customer,ProdinTran"))
        End If
    End Sub

End Class

回答by mason

I wrote an extension method to find Menu Item by value.

我写了一个扩展方法来按值查找菜单项。

C#

C#

public static class ExtensionMethods
{
        public static System.Web.UI.WebControls.MenuItem GetMenuItemByValue(this System.Web.UI.WebControls.Menu menu, string ItemValue)
            {
            foreach (System.Web.UI.WebControls.MenuItem item in menu.Items)
                {
                if (item.Value == ItemValue)
                    {
                    return item;
                    }
                }
            return null;
            }
   }

VB.NET

网络

Public NotInheritable Class ExtensionMethods
    Private Sub New()
    End Sub
    <System.Runtime.CompilerServices.Extension> _
    Public Shared Function GetMenuItemByValue(menu As System.Web.UI.WebControls.Menu, ItemValue As String) As System.Web.UI.WebControls.MenuItem
        For Each item As System.Web.UI.WebControls.MenuItem In menu.Items
            If item.Value = ItemValue Then
                Return item
            End If
        Next
        Return Nothing
    End Function
End Class

So then I could do something like..

那么我可以做类似的事情..

C#

C#

protected void Page_Load(object sender, EventArgs e)
{
    if(!User.IsAuthenticated)
    {
       NavigationMenu.GetMenuItemByValue("ProdinTran").Visible=false;;
    }
}

VB.NET

网络

Protected Sub Page_Load(sender As Object, e As EventArgs)
    If Not User.IsAuthenticated Then
        NavigationMenu.GetMenuItemByValue("ProdinTran").Visible = False       
    End If
End Sub