我正在设计一个使用母版页的网站。
我有一个登录文本框和一个用户可以用来登录的标签。这些控件在我的母版页上。
但是,即使用户登录文本框后,在下一页中显示要求输入电子邮件ID和密码的标签,我在成功登录后重定向。
在用户之后,我想隐藏登录标签和文本框,而是显示欢迎用户消息。
但我无法在下一页中进行重定向编辑。我怎么隐藏它?
答案 0 :(得分:3)
如果您使用的是FormsAuthentication
,则可以使用LoginView
根据用户的登录状态显示控件。
<asp:LoginView ID="LoginViewTemplate" runat="server">
<LoggedInTemplate>
// Welcome message goes here
</LoggedInTemplate>
<AnonymousTemplate>
// Textboxes and other login stuff goes here
</AnonymousTemplate>
</asp:LoginView>
答案 1 :(得分:1)
您不应在母版页中有登录文本框。
如果您出于某种原因拥有它,我建议您为登录页面和登录页面提供不同的母版页。
答案 2 :(得分:0)
这里的解决方案通常是使用模板化控件;这意味着,根据状态,可以显示相应的模板,从而显示控件。
在这种情况下,已经有LoginView
控件,它为未经身份验证和经过身份验证的用户公开这两个模板。默认情况下,如果将显示登录模板,则在进行身份验证并重新加载页面时,将显示另一个模板,允许您使用LoginName
控件显示登录的用户名。
所提供的链接应该为您提供了所需的一切,以便您开始运行,考虑到您已经为自己带来了这么远!但是,这是文章的片段,显示了相关的标记和可用的属性/事件等:
<asp:LoginView
EnableTheming="True|False"
EnableViewState="True|False"
ID="string"
OnDataBinding="DataBinding event handler"
OnDisposed="Disposed event handler"
OnInit="Init event handler"
OnLoad="Load event handler"
OnPreRender="PreRender event handler"
OnUnload="Unload event handler"
OnViewChanged="ViewChanged event handler"
OnViewChanging="ViewChanging event handler"
runat="server"
SkinID="string"
Visible="True|False">
<AnonymousTemplate>
<!-- child controls -->
</AnonymousTemplate>
<LoggedInTemplate>
<!-- child controls -->
</LoggedInTemplate>
<RoleGroups>
<asp:RoleGroup
Roles="string">
<ContentTemplate>
<!-- child controls -->
</ContentTemplate>
</asp:RoleGroup>
</RoleGroups>
</asp:LoginView>
正如您所看到的,此控件提供了足够的抽象以与您自己的身份验证方法保持一致,因为有许多选项可供ASP.NET选择。
答案 3 :(得分:0)
如果您只想隐藏它,请将控件放在面板控件中,然后在用户登录时隐藏页面加载面板。
因此,当用户使用登录按钮登录时,为其用户ID设置会话变量,如下所示:
Session("UserID") = <some formula to get number>
然后在母版页的页面加载代码部分写:
If not Session("UserID") is nothing then
pnlLogin.Visible = False
End If
然而,有更好的控制和更正确的方法来执行此类操作,例如登录控件,因此不建议使用此方法。