この問題があります.1つのマスターページに1つの「ログイン」リンクボタンと1つの「UserList」リンクボタンがあります。ユーザーがログインし、「UserList」リンクボタンをクリックすると、上記のマスターページを持つ UserList ページが開きます (これは私が達成したことです)。
ただし、ユーザーがログインしていないときに「UserList」をクリックすると、「ログイン」リンクボタンのクリックが呼び出されます。どうすればこれを達成できますか? 助けてください..
この問題があります.1つのマスターページに1つの「ログイン」リンクボタンと1つの「UserList」リンクボタンがあります。ユーザーがログインし、「UserList」リンクボタンをクリックすると、上記のマスターページを持つ UserList ページが開きます (これは私が達成したことです)。
ただし、ユーザーがログインしていないときに「UserList」をクリックすると、「ログイン」リンクボタンのクリックが呼び出されます。どうすればこれを達成できますか? 助けてください..
これを試して:
MasterPageの HTML内:
LinkButtonLoginの onclick イベントのイベント ハンドラーを定義します。
<asp:linkbutton id="LinkButtonLogin" runat="server"
text="Login" onclick="LinkButtonLogin_Click"></asp:linkbutton>
ビューから隠されているダミー ボタンを作成します。次に、ModalPopupExtenderについて、ModalPopupExtenderコントロールの TargetControlID を LinkButtonLogin からButtonInvisibleに変更します。これにより、ModalPopupExtenderがコードから非表示/表示可能に効果的に偽装されます。
<asp:button id="ButtonInvisible" runat="server" style="display: none;" />
MasterPage の分離コード:
protected void Page_Load(object sender, EventArgs e)
{
/*
This adds a client-side event to your HyperLink control that mimics
LinkButtonLogin's onclick event, but ONLY if the current user is not
logged in.
*/
if (!UserIsLoggedIn())
{
HyperLinkUserList.Attributes.Add("onclick",
"document.getElementById('" +
LinkButtonLogin.ClientID + "').click();");
}
}
protected void LinkButtonLogin_Click(object sender, EventArgs e)
{
// check if the user is logged in.
if (!UserIsLoggedIn())
{
// show the modal login window
ModalPopupExtender.Show();
}
else
{
/*
This assumes that you always want a user to
go to the UserList page upon being logged in.
You can add some code here to redirect to
different pages based on certain criteria.
*/
Response.Redirect("userlist.aspx");
}
}
これを行う 1 つの方法は、web.config ファイルに認証セクションを追加することです。これにより、ユーザーが UserList リンクをクリックし、ユーザーがログインしていない場合にログイン ページが表示されます。
<location path="UserList.aspx">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
アプリに適している場合は、コントロールを使用して、ログインしていないユーザーから Userlist リンクを非表示にすることもできます<asp:LoginView>
。