【问题标题】:Changing controls in Master Page in ASP.NET在 ASP.NET 中更改母版页中的控件
【发布时间】:2011-08-22 16:09:17
【问题描述】:

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

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

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

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

但我无法在我重定向的下一页进行编辑。我该如何隐藏它?

【问题讨论】:

  • 您如何登录用户?饼干?表单身份验证?
  • 请显示一些示例代码

标签: c# asp.net master-pages


【解决方案1】:

如果您使用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>

【讨论】:

    【解决方案2】:

    母版页中不应有登录文本框。

    如果出于某种原因,我建议您为登录页面和登录页面设置不同的母版页。

    【讨论】:

      【解决方案3】:

      如果您只想隐藏它,请将控件放在面板控件中,然后如果用户已登录,则在页面加载时隐藏面板。

      所以当用户登录时,使用登录按钮,为他们的用户 ID 设置一个会话变量,如下所示:

      Session("UserID") = <some formula to get number>
      

      然后在母版页的pageload代码部分写:

      If not Session("UserID") is nothing then
          pnlLogin.Visible = False
      End If
      

      但是有更好的控件,以及更正确的方法来执行此类操作,例如登录控件,因此不推荐使用此方法。

      【讨论】:

        【解决方案4】:

        这里的解决方案通常是使用模板化控件;这意味着,根据状态,可以显示适当的模板和控件。

        在这种情况下,已经存在LoginView 控件,它为未经身份验证和经过身份验证的用户公开了两个模板。默认情况下,if 会显示登录模板,然后,当通过身份验证并重新加载页面时,将显示另一个模板,允许您使用 LoginName 控件显示登录用户名。

        考虑到您已经走到了这一步,所提供的链接应该会为您提供启动和运行所需的所有信息!但是,这是文章中的 sn-p,显示了相关的标记和可用的属性/事件等:

        <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 有许多选项可供选择。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-08-02
          • 2015-12-21
          • 2013-05-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-26
          • 1970-01-01
          相关资源
          最近更新 更多