0

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

在默认页面上,如果用户尚未登录或创建帐户,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>
4

3 回答 3

4

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

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

如果您使用的是内置的 .net Membership 提供程序,则有一个名为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属性。

于 2013-07-02T13:57:19.927 回答
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事件中,您可以检查用户是否已登录。我建议您存储它们是否已登录缓存(即Sessionvalue IsLoggedOn)。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;
    }
}
于 2013-07-02T14:06:36.907 回答
0

当用户登录成功时。您应该将他的用户名保留在 Session 中

Session["user"] = username;

Now on page Load() check if Session["user"] is null then label.text = "register"
else = label.text = "";

希望它会有所帮助。

于 2013-07-02T14:07:35.517 回答