2011-08-22 67 views
0

我正在設計一個使用母版頁的網站。在ASP.NET主頁中更改控件

我有一個登錄文本框和一個用戶可以用來登錄的標籤。這些控件位於我的母版頁上。

但是,即使在用戶登錄文本框並且標籤要求電子郵件ID和密碼顯示在下一頁,我在成功登錄後重定向。

用戶之後,我想隱藏登錄標籤和文本框,而是顯示一個歡迎用戶消息。

但我無法在下一頁中編輯我重定向的地方。我該如何隱瞞?

+0

你是如何登錄用戶的?餅乾?表單認證? – Curt

+0

請顯示一些示例代碼 – Curt

回答

1

在主頁面中不應該有登錄文本框。

如果你有它出於某種原因,我建議你有不同的登錄頁面和登錄頁面的母版頁。

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中進行選擇。

0

如果你只想隱藏它,把控制面板中的控制,然後隱藏在頁面加載的面板如果用戶已登錄。

因此,當用戶登錄,使用登錄按鈕,設置會話變量輸入自己的用戶ID是這樣的:

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

然後在母版頁寫的頁面加載代碼段:

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

然而有更好的控制,而m提供正確的方式來執行這種類型的操作,例如登錄控制,因此不建議使用此方法。

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>