在ASP.NET中更改母版页中的控件
本文关键字:母版页 控件 ASP NET | 更新日期: 2023-09-27 18:06:25
我正在设计一个使用母版页的网站。
我有一个登录文本框和一个标签,用户可以使用登录。这些控件在我的主页上。
然而,即使在用户登录后的文本框和标签要求电子邮件id和密码显示在下一页,我重定向成功登录后。
在用户之后,我想隐藏登录标签和文本框,而不是显示欢迎用户消息。
但是我无法在我重定向的下一页编辑。我要怎么隐藏呢?
如果您使用的是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>
你不应该在主页上有一个登录文本框。
如果出于某种原因,我建议您为登录页面和登录页面设置不同的母版页面。
如果你只想隐藏它,把控件放在面板控件中,然后在用户登录时在页面加载时隐藏面板。
所以当用户登录时,使用login按钮,为他们的用户id设置一个会话变量,如下所示:
Session("UserID") = <some formula to get number>
然后在母版页的页面加载代码部分写入:
If not Session("UserID") is nothing then
pnlLogin.Visible = False
End If
然而,有更好的控件和更正确的方法来做这种类型的操作,如登录控件,所以不推荐使用这种方法。
解决方案通常是使用模板化控件;这意味着,根据状态,可以显示适当的模板和相应的控件。
在这种情况下,已经存在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中有许多选项可供选择。