組み込みのログインを使用して ASP.NET MVC アプリケーションを作成しています。このページには、ユーザーがログインせずにアクセスできる 2 つのメニュー項目もあります。
私の要件は、ユーザーがログインするまでメニュー項目にアクセスできる必要があるため、メニュー項目を非表示にするか、ユーザーがログインするまでクリックを無効にする必要があることです。
どうやってやるの?
組み込みのログインを使用して ASP.NET MVC アプリケーションを作成しています。このページには、ユーザーがログインせずにアクセスできる 2 つのメニュー項目もあります。
私の要件は、ユーザーがログインするまでメニュー項目にアクセスできる必要があるため、メニュー項目を非表示にするか、ユーザーがログインするまでクリックを無効にする必要があることです。
どうやってやるの?
Razor ビューを使用している場合は、次のようなものを使用できます。
@if(Request.IsAuthenticated) {
<span><a href="#">@user.ShortName</a></span>
<text>
@Html.ActionLink("My Profile", "profile", "account") |
@Html.ActionLink("Help", "index", "help") |
@Html.ActionLink("Log Off", "LogOff", "Account")
</text>
}
@if {...} ブロック内のコードは、ユーザーがログインしている場合に表示されるものです。
Web フォーム (.aspx) ビュー用の同等のコードがあり、さまざまな方法で実行できます。
1 つの方法は、コード ビハインドから作業し、サーバー コントロールを操作することです。したがって、.aspx ページは次のようになります。
<asp:HyperLink ID="lnkMyProfile" Text="My Profile" NavigateUrl="/myprofile"></asp:HyperLink>
次に、コード ビハインド (.aspx.cs など) で:
if(User.Identity.IsAuthenticated) {
lnkMyProfile.Visible = true;
} else {
lnkMyProfile.Visible = false;
}