登录后显示ASP.Net主页边栏(在登录时保持显示)

我的母版页上有以下侧边栏。它不是任何ContentPlaceHolder的一部分。
<div runat="server" visible="false" id="menuAccountMembersDiv" class="leftCol">
    <asp:Menu ID="menuAccountMembers" runat="server" StaticSubMenuIndent="16px" Visible="false">
    <Items>
        <asp:MenuItem ImageUrl="~/Resources/x.png" 
        NavigateUrl="~/About.aspx" Text="x" ToolTip="x" 
        Value="b647ce4e-5c7f-400c-a921-ec7902494f26"></asp:MenuItem>
        <asp:MenuItem ImageUrl="~/Resources/y.png" 
        NavigateUrl="~/About.aspx" Text="y" ToolTip="y" 
        Value="y"></asp:MenuItem>
        <asp:MenuItem ImageUrl="~/Resources/sarahhunkin.png" NavigateUrl="~/About.aspx" 
        PopOutImageUrl="~/Resources/z.png" Text="z" 
        ToolTip="z" Value="z"></asp:MenuItem>
        <asp:MenuItem ImageUrl="~/Resources/a.png" 
        NavigateUrl="~/About.aspx" 
        PopOutImageUrl="~/Resources/apop.png" Text="a" 
        ToolTip="a" Value="a"></asp:MenuItem>
    </Items>
    </asp:Menu>
</div>
我最初隐藏它。但是我希望在登录后显示它并保持显示。使用标准的Web应用程序登录页面。我尝试了以下方法:
protected void LoginUser_LoggedIn(object sender, EventArgs e)
{
    Menu MenuAccountMembers = (Menu)Master.FindControl("menuAccountMembers");

    MenuAccountMembers.Visible = true;

    Control menuAccountMembersDiv = (Control)Master.FindControl("menuAccountMembersDiv");

    menuAccountMembersDiv.Visible = true;
}
我不确定要与div标签进行交互,因为没有Div对象。无论如何,这不会显示带有菜单的侧栏 编辑: 我最终将以下代码添加到母版页本身。
public partial class SiteMaster : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (HttpContext.Current.Request.IsAuthenticated)
        {
            Control MenuDiv = this.FindControl("menuAccountMembersDiv");
            MenuDiv.Visible = true;

            Menu AccountMenu = (Menu)MenuDiv.FindControl("menuAccountMembers");
            AccountMenu.Visible = true;
        }
    }
}
    
已邀请:
我会根据身份验证状态直接在你的div上设置visibiliy
<div runat="server" visible="<%# Page.User.IsAuthenticated %>" id="menuAccountMembersDiv" class="leftCol">
那样你不需要你的
LoginUser_LoggedIn
方法,菜单会在每次加载时显示/隐藏,具体取决于用户是否登录 并且记得从
<asp:Menu>
控件中移除
Visible="false"
,如果外部
div
被隐藏,则无论如何都不会显示其中的任何内容。     
由于菜单的Div标签中有runat =“server”标签,因此您可以直接在代码中引用它...
menuAccountMembersDiv.Style.Item("Display") = "none";
要么
menuAccountMembersDiv.Visible = False;
    
div标签是HtmlGenericControl类。要访问此类导入命名空间System.Web.UI.HtmlControls;并使用这样的东西:
HtmlGenericControl div = Master.FindControl("menuAccountMembersDiv") as HtmlGenericControl;
if(div != null)
{
    div.Visible = true;
}
或者,您可以将菜单移动到UserControl并隐藏或显示使用UserControl的ID。 希望它能帮助你解决问题。     

要回复问题请先登录注册