对于我必须同时启用/禁用这两者,这对我来说只是感觉“hacky”。由于其中一个可能已经“打开”,我需要将它们关闭或重新打开。我觉得好像我可以以某种方式躲避其中一个检查:
private void SetPanels()
{
if(userIsLoggedIn)
{
pnlAuthed.Visible = true;
pnlNotAuthed.Visible = false;
}
else
{
pnlSignUpForm_NotAuthed.Visible = true;
pnlSignUpForm_Authed.Visible = false;
}
}
答案 0 :(得分:2)
在我看来,你基本上正在重写标准的asp.net LoginView控件可以声明性地做什么:
<asp:LoginView id="LoginView1" runat="server">
<AnonymousTemplate>
Please log in for personalized information.
</AnonymousTemplate>
<LoggedInTemplate>
Thanks for logging in
<asp:LoginName id="LoginName1" runat="Server"></asp:LoginName>.
</LoggedInTemplate>
</asp:LoginView>
答案 1 :(得分:2)
除了Dan Diplo的LoginView answer之外,您可能还需要考虑MultiView控件的更一般化(IE,而非特定登录相关)案例。 MultiView包含一组一个或多个互斥视图(类似于Panel),
MultiView相对容易以声明方式设置:
<asp:MultiView runat="server" id="pageMultiView" ActiveViewIndex="0">
<asp:View runat="server" id="view1">
<!-- your 1st view content here! -->
</asp:View>
<asp:View runat="server" id="view2">
<!-- your 2nd view content here! -->
</asp:View>
</asp:MultiView>
在代码中,您可以像这样切换视图:
pageMultiView.SetActiveView(view1);
因此,你已经完成了。
答案 2 :(得分:0)
不要嗤之以鼻,但对于初学者,你不能把它简化为:
pnlUpdate.Visible = showUpdate;
divSignUp.Visible = showSignUp;
答案 3 :(得分:0)
我认为你正在寻找这样的东西:
pnlAuthed.Visible = userIsLoggedIn;
pnlNotAuthed.Visible = !userIsLoggedIn;
pnlSignUpForm_NotAuthed.Visible = !userIsLoggedIn;
pnlSignUpForm_Authed.Visible = userIsLoggedIn;
答案 4 :(得分:0)
private void SetPanels()
{
pnlAuthed.Visible = userIsLoggedIn;
pnlNotAuthed.Visible = !pnlAuthed.Visible;
}