0

ユーザーが Web アプリを開くと、自動的に既定のページが表示されます。

デフォルト ページでは、ユーザーがログインまたはアカウントを作成していない場合、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>
4

3 に答える 3

4

login.aspxリンクがページを指しているという事実に基づいて、おそらく asp.net の Web フォーム セクションを使用していることがわかります。

通常、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>

コード ビハインドでは、またはのいずれかを表示できます。

もう 1 つの方法は、<a>タグをサーバー コントロールとして使用することです。ログイン状態に応じて、テキストとハイパーリンクを更新できます。

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

ユーザーがログインしている場合は、コード ビハインドでNavigateUrlおよびTextプロパティを変更できます。

于 2013-07-02T13:57:19.927 に答える
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イベントで、ユーザーがログインしているかどうかを確認できます。それらがキャッシュに記録されているかどうかに関係なく保存することをお勧めします(つまり、Sessionvalue IsLoggedOn)。次のようPanelに、 の値に基づいてASP.NET の可視性を切り替えます。IsLoggedOn

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

    if(isUserLoggedOn)
    {
        PanelLogin.Visible = false;
    }
    else
    {
        PanelLogin.Visible = true;
    }
}
于 2013-07-02T14:06:36.907 に答える