Боковая панель главной страницы ASP.Net отображается после входа в систему (при ее входе в систему отображается) - PullRequest
0 голосов
/ 13 декабря 2010

У меня есть следующая боковая панель на главной странице.Он не является частью какого-либо 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>

Я изначально скрываю это.Но я хотел бы отобразить его и оставить его отображенным после входа в систему. Используя стандартную страницу входа в веб-приложение.Я попробовал следующее:

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

Ответы [ 3 ]

1 голос
/ 13 декабря 2010

Поскольку у вас есть тег runat = "server" в теге Div меню, вы можете ссылаться на него непосредственно в коде ...

menuAccountMembersDiv.Style.Item("Display") = "none";

или

menuAccountMembersDiv.Visible = False;
1 голос
/ 13 декабря 2010

Я бы пошел для установки visibiliy непосредственно на ваш div на основе статуса аутентификации

<div runat="server" visible="<%# Page.User.IsAuthenticated %>" id="menuAccountMembersDiv" class="leftCol">

таким образом, вам не нужен ваш метод LoginUser_LoggedIn, и меню будет отображаться / скрываться при каждой загрузке в зависимости от того, вошел пользователь в систему или нет

И не забудьте удалить Visible="false" из вашего <asp:Menu> элемента управления, если внешний div скрыт, то внутри него все равно ничего не будет отображаться.

1 голос
/ 13 декабря 2010

Тег div является классом HtmlGenericControl.Чтобы получить доступ к этому классу, импортируйте пространство имен System.Web.UI.HtmlControls;и используйте что-то вроде этого:

HtmlGenericControl div = Master.FindControl("menuAccountMembersDiv") as HtmlGenericControl;
if(div != null)
{
    div.Visible = true;
}

Или вы можете переместить свое меню в UserControl и скрыть или показать просто использовать идентификатор вашего UserControl.

Надеюсь, это поможет вам в вашем вопросе.

...