2013-07-02 121 views
0

用戶打開我們的網絡應用程序並自動進入默認頁面。用戶成功登錄後,如何隱藏「註冊」鏈接?

在默認頁面上,如果用戶尚未登錄或創建帳戶,則Register or Login鏈接顯示在頁面的頂部。

<table bgcolor="#003366" width="100%"> 
    <tr><td align="right"><a href="login.aspx"><span style=" color:darkOrange;font-weight:bold">Login or Register</span></a></td></tr></table> 

這很好。

但是,用戶成功登錄後,他/他被重定向到他/她的頁面。

問題是,無論出於何種原因,用戶都會點擊默認頁面,Register or Log in鏈接再次出現。

只要用戶登錄並且只有在用戶註銷後才顯示,是否有隱藏該鏈接的方法?

在此先感謝您的幫助。

這是我迄今所取得的變化,添加標籤控件:

<table bgcolor="#003366" width="100%"> 
    <tr><td align="right"><a href="login.aspx"><span style=" color:darkOrange;font-weight:bold"><label id="loginId" runat="server" Text="Login/Register"></label></span></a></td></tr></table> 
+0

您使用的是什麼類型的會員供應商? –

+0

'bgcolor'? 'ALIGN = 「右」'?內聯樣式?你需要一個網頁設計師,統計。 – millimoose

+0

@millimoose什麼是網頁設計師與客戶端開發有關? –

回答

4

根據你的鏈接指向一個login.aspx頁面的事實,我可以看到,你可能正在使用Web窗體部分的asp.net

通常,當使用Web窗體中的頁面上的身份驗證和顯示/隱藏元素時,可以使用一些asp.net控件。

如果您使用.net會員提供程序中的內部版本,則會有一個名爲Login View的控件。這是一個簡單的控件,允許您在用戶登錄/註銷時顯示不同的內容。

你可以做一些簡單的事情;

<asp:loginview ID="Loginview1" runat="server"> 
    <AnonymousTemplate> 
     <a href="Login.aspx">Login/Register</a> 
    </AnonymousTemplate> 
    <LoggedInTemplate> 
     <a href="Logout.aspx">Logout</a> 
    </LoggedInTemplate> 
</asp:loginview> 

這會自動顯示/隱藏正確的內容。

您還可以使用任何服務器端控件,並使用此屬性Visible。因此,在您的代碼中,您可以將控件設置爲可見或不可見,具體取決於登錄狀態。

此外,你可以包裝你的代碼在<asp:Panel>然後只顯示隱藏取決於;

<asp:Panel id="pnlLoggedOut" runat="server" Visible="True"> 
    <a href="login.aspx"><span style=" color:darkOrange;font-weight:bold">Login or Register</span></a> 
</asp:Panel> 
<asp:Panel id="pnlLoggedIn" runat="server" Visible="False"> 
    <a href="logout.aspx"><span style=" color:darkOrange;font-weight:bold">Logout</span></a> 
</asp:Panel> 

在你的代碼背後你可以顯示或者。

另一種方法是隻需將您的<a>標籤作爲服務器控件。然後,您可以根據登錄狀態更新文本和超鏈接。

<asp:HyperLink ID="hlLoginStatus" runat="server" NavigateUrl="Login.aspx" Text="Login/Register" /> 

在後面的代碼,如果用戶登錄,那麼你可以改變NavigateUrlText財產。

+0

可以肯定的是,@Tim,pnLoggedOut,pnLoggedIn爲我工作。 它之前沒有工作的原因是我沒有在pageLoad()事件中包含句柄---處理Me.Load做了詭計。 非常感謝 – Kenny

+0

@ Kenny很高興我能幫上忙。當你錯過Handles Me.Load事件時,我討厭它!總是坐在那裏想知道爲什麼代碼不工作! :) –

0

如果你想保持你的代碼,儘可能的,那麼我建議具有可訪問服務器端的控制包裝紙您的標記,像這樣:

<asp:Panel id="PanelLogin" runat="server" Visible="True"> 
    <table bgcolor="#003366" width="100%"> 
     <tr> 
      <td align="right"> 
       <a href="login.aspx"><span style=" color:darkOrange;font-weight:bold">Login or Register</span></a> 
      </td> 
     </tr> 
    </table> 
</asp:Panel> 

現在,在您的代碼隱藏Page_Load事件,您可以檢查用戶是否已登錄。我建議您存儲他們是否登錄了緩存(即SessionIsLoggedOn)。您將切換ASP.NET Panel的知名度,基於對IsLoggedOn值,就像這樣:

protected void Page_Load(object sender, EventArgs e) 
{ 
    bool isUserLoggedOn = (bool)Session["IsLoggedOn"]; 

    if(isUserLoggedOn) 
    { 
     PanelLogin.Visible = false; 
    } 
    else 
    { 
     PanelLogin.Visible = true; 
    } 
} 
0

當成功登錄後,用戶登錄。你應該把他的用戶名保留在Session中作爲

Session["user"] = username; 

Now on page Load() check if Session["user"] is null then label.text = "register" 
else = label.text = ""; 

希望它能幫上忙。

+0

偉大的東西偉大的人。 @Karl,我嘗試了你的解決方案,但沒有奏效。這意味着沒有任何改變。當我點擊默認頁面時,我仍然收到註冊鏈接。也許,我錯過了代碼中的東西?哈立德,當我嘗試你的解決方案時,我不再看到註冊是否登錄。我注意到的一件事是,當我嘗試Label.Tex時,我得到一個錯誤。它不斷給我選擇label.InnerText。也許這就是爲什麼它不起作用。蒂姆,我沒有使用loginView,抱歉,但不錯的一段代碼。 我更新了我的代碼。我錯誤地使用了標籤嗎? – Kenny

+0

以及可能asp.net的Linkbutton或超鏈接可以是一個替代品,然後以編程方式可以完成任何事情。 –