Hは、メニューdivを使用してマスターページを作成しました。ログインページとしてインデックスページを作成したので、マスターページに登録されているindex.aspxのログインコントロールを使用します。
ここで私の質問は、ユーザーがログインするまでマスターページにあるメニューdivを非表示にするにはどうすればよいですか。ユーザーがログインに成功すると、メニューdivがユーザーに表示されます。
Hは、メニューdivを使用してマスターページを作成しました。ログインページとしてインデックスページを作成したので、マスターページに登録されているindex.aspxのログインコントロールを使用します。
ここで私の質問は、ユーザーがログインするまでマスターページにあるメニューdivを非表示にするにはどうすればよいですか。ユーザーがログインに成功すると、メニューdivがユーザーに表示されます。
このコードをMasterPageに入れました
<% if (HttpContext.Current.User.Identity.IsAuthenticated ) { %>
<div>navigation html when is authenticated</div>
<% } else { %>
<div>navigation html when is NOT authenticated</div>
<% } %>
マスターページでは、次のようなことができます。
if (Request.IsAuthenticated)
{
<p>Welcome back, @User.Identity.Name!</p>
}
else
{
<!-- Put login form here. -->
}
コンテンツページに@MasterTypeディレクティブを追加します。ディレクティブで、VirtualPath属性をマスターページの場所に設定します
次に、Master.FindControlを使用します
void Page_Load()
{
// Gets a reference to a TextBox control inside
// a ContentPlaceHolder
ContentPlaceHolder mpContentPlaceHolder;
TextBox mpTextBox;
mpContentPlaceHolder =
(ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
if(mpContentPlaceHolder != null)
{
mpTextBox =
(TextBox) mpContentPlaceHolder.FindControl("TextBox1");
if(mpTextBox != null)
{
mpTextBox.Text = "TextBox found!";
}
}
// Gets a reference to a Label control that not in
// a ContentPlaceHolder
Label mpLabel = (Label) Master.FindControl("masterPageLabel");
if(mpLabel != null)
{
Label1.Text = "Master page label = " + mpLabel.Text;
}
}