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

时间:2011-08-22 16:09:18

标签: c# asp.net master-pages

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

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

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

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

但我无法在下一页中进行重定向编辑。我怎么隐藏它?

4 个答案:

答案 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

然而,有更好的控制和更正确的方法来执行此类操作,例如登录控件,因此不建议使用此方法。