在ASP.NET中更改母版页中的控件

本文关键字:母版页 控件 ASP NET | 更新日期: 2023-09-27 18:06:25

我正在设计一个使用母版页的网站。

我有一个登录文本框和一个标签,用户可以使用登录。这些控件在我的主页上。

然而,即使在用户登录后的文本框和标签要求电子邮件id和密码显示在下一页,我重定向成功登录后。

在用户之后,我想隐藏登录标签和文本框,而不是显示欢迎用户消息。

但是我无法在我重定向的下一页编辑。我要怎么隐藏呢?

在ASP.NET中更改母版页中的控件

如果您使用的是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中有许多选项可供选择。