用户成功登录后如何隐藏“注册”链接?

时间:2013-07-02 13:50:35

标签: asp.net vb.net

用户打开我们的网络应用程序并自动进入默认页面。

在默认页面上,如果用户尚未登录或创建帐户,则会在页面顶部显示Register or Login链接。

 <table bgcolor="#003366" width="100%">
  <tr><td align="right"><a href="login.aspx"><span style=" color:darkOrange;font-weight:bold">Login or Register</span></a></td></tr></table>

这很好。

但是,在用户成功登录后,他/她将被重定向到他/她的页面。

问题是,无论出于何种原因,用户都会点击默认页面,Register or Log in链接会再次出现。

只要用户登录并且只在用户注销后才显示此链接,是否有办法隐藏此链接?

提前感谢您的帮助。

这是我到目前为止所做的改变,添加了标签控制:

 <table bgcolor="#003366" width="100%">
  <tr><td align="right"><a href="login.aspx"><span style=" color:darkOrange;font-weight:bold"><label id="loginId" runat="server" Text="Login / Register"></label></span></a></td></tr></table>

3 个答案:

答案 0 :(得分:4)

基于您的链接指向login.aspx页面的事实,我可以看到您可能正在使用asp.net的Web表单部分

通常在使用身份验证并在Web窗体中的页面上显示/隐藏元素时,您可以使用一些asp.net控件。

如果您使用内置.net成员资格提供程序,则会有一个名为Login View的控件。这是一个简单的控件,允许您在用户登录/注销时显示不同的内容。

你可以做一些简单的事情;

<asp:loginview ID="Loginview1" runat="server">
    <AnonymousTemplate>
        <a href="Login.aspx">Login / Register</a>
    </AnonymousTemplate>
    <LoggedInTemplate>
        <a href="Logout.aspx">Logout</a>
    </LoggedInTemplate>
</asp:loginview>

这将自动显示/隐藏正确的内容。

您还可以使用任何服务器端控件并使用此属性的Visible属性。因此,在您的代码中,您可以根据登录状态将控件设置为可见或不可用。

此外,您可以将代码包装在<asp:Panel>中,然后只显示隐藏;

<asp:Panel id="pnlLoggedOut" runat="server" Visible="True">
    <a href="login.aspx"><span style=" color:darkOrange;font-weight:bold">Login or Register</span></a>
</asp:Panel>
<asp:Panel id="pnlLoggedIn" runat="server" Visible="False">
    <a href="logout.aspx"><span style=" color:darkOrange;font-weight:bold">Logout</span></a>
</asp:Panel>

在您的代码中,您可以显示或。

另一种方法是将<a>标记作为服务器控件。然后,您可以根据登录状态更新文本和超链接。

<asp:HyperLink ID="hlLoginStatus" runat="server" NavigateUrl="Login.aspx" Text="Login / Register" />

如果用户已登录,则在您的代码中,您可以更改NavigateUrlText属性。

答案 1 :(得分:0)

如果你想尽可能地维护你的代码,那么我建议用一个可以在服务器端访问的控件包装你的标记,如下所示:

<asp:Panel id="PanelLogin" runat="server" Visible="True">
    <table bgcolor="#003366" width="100%">
        <tr>
            <td align="right">
                <a href="login.aspx"><span style=" color:darkOrange;font-weight:bold">Login or Register</span></a>
            </td>
        </tr>
    </table>
</asp:Panel>

现在,在您的代码隐藏Page_Load事件中,您可以检查用户是否已登录。我建议你存储他们是否登录缓存(即SessionIsLoggedOn)。您将根据Panel的值切换ASP.NET IsLoggedOn的可见性,如下所示:

protected void Page_Load(object sender, EventArgs e)
{
    bool isUserLoggedOn = (bool)Session["IsLoggedOn"];

    if(isUserLoggedOn)
    {
        PanelLogin.Visible = false;
    }
    else
    {
        PanelLogin.Visible = true;
    }
}

答案 2 :(得分:0)

用户登录成功后登录。你应该在Session中保留他的用户名

Session["user"] = username;

Now on page Load() check if Session["user"] is null then label.text = "register"
else = label.text = "";
希望它会有所帮助。