用户登录后如何隐藏登录和注册按钮?

时间:2011-11-09 15:54:12

标签: c# asp.net

我正在做一个学校项目。我能够成功登录用户注册。但是当他/她隐身时,我如何隐藏LoginRegister页面链接。我正在使用css<ul>。在sign-out之后我怎样才能再次显示它们 以下是MasterPage

上我的链接的编码
<td id="tabs2" style="width:190px">
                <ul id="logreg">
                            <li><a href="Login.aspx" ><span>LogIn</span></a></li>
                            <li><a href="Registration.aspx"><span>Register</span></a>
                            </li>
                            </ul>
                </td>

enter image description here

我怎样才能像按钮一样使用标签SignOut

6 个答案:

答案 0 :(得分:4)

另一个选择是只检查Request.IsAuthenticated

<% if(!HttpContext.Current.Request.IsAuthenticated) { %>
  <ul id="logreg">
    <li><a href="Login.aspx" ><span>LogIn</span></a></li>
    <li><a href="Registration.aspx"><span>Register</span></a></li>
  </ul>
<% } else { %>
   // Show a logout button
<% } %>

答案 1 :(得分:4)

将元素包装在placeholder控件中,并根据会话状态设置Visible属性。

    <td id="tabs2" style="width:190px">
                    <ul id="logreg">
                          <asp:placeholder id="NotLoggedInPH" runat="server">
                                <li><a href="Login.aspx" ><span>LogIn</span></a></li>
                                <li><a href="Registration.aspx"><span>Register</span></li></a>
                         </asp:placeholder>
                         <asp:placeholder id="LoggedInPH" runat="server" visible="false">
                                <li><asp:HyperLink id="btnLogout" runat="server"><span>Logout</span></asp:HyperLink></li>
                         </asp:placeholder>                                    
                    </ul>
   </td>

然后在Page_Load

if (!(session["sessionName"])){
    NotLoggedInPH.visible = false;
    LoggedInPH.visible= true;
}

答案 2 :(得分:2)

我建议使用LoginView控件和Forms Auth,但这里有一些方法可以使您当前的代码正常工作:

假设表格认证:

<li id="liLogin" runat="server" visible='<%= !User.Identity.IsAuthenticated %>' ><a href="Login.aspx"><span>LogIn</span></a></li>    
<li id="liReg" runat="server" visible='<%= !User.Identity.IsAuthenticated %>' ><a href="Registration.aspx"><span>Register</span></a></li>
<li id="liSignout" runat="server" visible='<%= User.Identity.IsAuthenticated %>' ><a href="Signout.aspx"><span>Signout</span></a></li>

使用Session var:

<li id="liLogin" runat="server" visible='<%= (Session["bla"] == null) %>' ><a href="Login.aspx"><span>LogIn</span></a></li>    
<li id="liReg" runat="server" visible='<%= (Session["bla"] == null) %>' ><a href="Registration.aspx"><span>Register</span></a></li>
<li id="liSignout" runat="server" visible='<%= (Session["bla"] != null) %>' ><a href="Signout.aspx"><span>Signout</span></a></li>

答案 3 :(得分:1)

您只需创建一个用户会话,并检查sign-in用户是否存在,如果存在则显示SignOut,否则显示login panel

答案 4 :(得分:1)

添加runat =“server”属性,虽然它的简单技巧。

<td id="tabs2" style="width:190px" runat="server"> 
                <ul id="logreg">
                            <li><a href="Login.aspx" ><span>LogIn</span></a></li>
                            <li><a href="Registration.aspx"><span>Register</span></a>
                            </li>
                            </ul>
                </td>

登录成功后,您可以这样做

tabs2.Visible=false

答案 5 :(得分:0)

由于您没有使用表单身份验证,而您的老师不允许您使用LoginView Control,我会给您另一个选项......这就是我要做的...

  1. 我会像母版页中的标题一样保留常用功能。这样的 用户登录检查本来是集中的。

  2. 我会转换为asp:超链接控件。主页面类的OnLoad方法检查保存id的会话变量是否为空,执行以下操作: hyperlinkObj.Attributes.Add( “风格”, “显示:无”);

相关问题