마스터 페이지에 다음과 같은 사이드 바를 가지고 있습니다. ContentPlaceHolder의 일부는 아닙니다.ASP.Net 마스터 페이지 로그인 후 사이드 바 표시 (로그인 한 상태로 유지)
<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 태그와 상호 작용할 수 있는지 모르겠다. 어떤 경우에도 메뉴가 포함 된 메뉴가 표시되지 않습니다.
EDIT : 다음 코드를 마스터 페이지 자체에 추가했습니다.
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;
}
}
}
ID로 컨트롤에 액세스 할 수 있다고 생각합니다. FindControl() 메서드를 사용할 필요가 없습니다. 당신은 단지 menuAccountMembersDiv.Visible = menuAccountMembers.Visible = true를 사용할 수 있습니다;) –