选中面板以启用/禁用可见性

时间:2009-10-19 20:16:53

标签: asp.net

对于我必须同时启用/禁用这两者,这对我来说只是感觉“hacky”。由于其中一个可能已经“打开”,我需要将它们关闭或重新打开。我觉得好像我可以以某种方式躲避其中一个检查:

private void SetPanels()
{
    if(userIsLoggedIn)
    {
        pnlAuthed.Visible = true;
        pnlNotAuthed.Visible = false;
    }
    else
    {
        pnlSignUpForm_NotAuthed.Visible = true;
        pnlSignUpForm_Authed.Visible = false;
    }
}

5 个答案:

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