用户打开我们的网络应用程序并自动进入默认页面。
在默认页面上,如果用户尚未登录或创建帐户,则会在页面顶部显示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>
答案 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" />
如果用户已登录,则在您的代码中,您可以更改NavigateUrl
和Text
属性。
答案 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
事件中,您可以检查用户是否已登录。我建议你存储他们是否登录缓存(即Session
值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;
}
}
答案 2 :(得分:0)
用户登录成功后登录。你应该在Session中保留他的用户名
Session["user"] = username;
Now on page Load() check if Session["user"] is null then label.text = "register"
else = label.text = "";
希望它会有所帮助。