2016-04-28 16 views
0

私の問題の要点は、ログインしたユーザーを表示するために私のウェブサイトのメニューを変更し、最初からログインボタンがあったログアウトボタンを変更することです。 私はMVCを初め、これについて間違っているかもしれません。これは私が変更したいメニューです。あなたは私のアイデアが何であるかを見ていきます。フォームでは、コードの背後から簡単にアクセスして、2つのメニューオプションのいずれかを非表示にすることができます。Asp.net MVC 5のコントローラからビュー内のメニューを操作するにはどうすればよいですか?

<ul id="menu"> 
         <li>@Html.ActionLink("Home", "Index", "Home")</li> 
         <li>@Html.ActionLink("Members", "About", "Home")</li> 
         <li>@Html.ActionLink("Schedule", "Contact", "Home")</li> 
         <li id="loginLink">@Html.ActionLink("Login", "Login", "Account")</li> 
         <li id="logoutLink">@Html.ActionLink("(" + Session["userName"].ToString() + ")" + "Logout", "Logout", "Account")</li> 
        </ul> 
+0

私の解決策があなたにとってうまくいかないかどうか教えてください... –

答えて

1

なぜコントローラからの表示操作をしたいですか? View固有のロジックがView自体に存在するはずです。

ユーザーを認証し、認証クッキーを設定している場合、あなたは自分のビューで次の手順を実行できます。

<ul id="menu"> 
    <li>@Html.ActionLink("Home", "Index", "Home")</li> 
    <li>@Html.ActionLink("Members", "About", "Home")</li> 
    <li>@Html.ActionLink("Schedule", "Contact", "Home")</li> 
    @if (User.Identity.IsAuthenticated) 
    { 
     <li id="LogoutLink">@Html.ActionLink(User.Identity.Name + "Log Out", "Logout", "Account")</li> 
    } 
    else 
    { 
     <li id="loginLink">@Html.ActionLink("Login", "Login", "Account")</li> 
    } 
</ul> 

あなたがユーザーを認証方法を正確に知らず、私はこのことを確かに言うことはできませんソリューションがお客様のニーズに合っています。

この例では、ユーザーがAuthenticatedの場合はLogoutLink List Itemを返し、そうでない場合はユーザーが認証されていない場合はLoginLink List Itemを返します。

ASP.NET IDライブラリを認証に使用する場合は、hereが素晴らしい例のあるブログです。これは私にとって大きな助けになりました。

+0

hmm、私はUser.Identityを使用していません。私は実際にそれを設定する方法を理解できませんでした、私はセッション変数を代わりに使用する、アイデンティティはMVCで推奨されていますか? – inifus

+0

クッキーを設定した場合、これらの情報をセッションに保存する必要はありません。これは悪い習慣です。現在どのようにユーザーを認証していますか? –

+0

興味がある場合は、ASP.Net IDライブラリの使用に関する次のリンクを含むように私の回答を更新しました。 http://benfoster.io/blog/aspnet-identity-stripped-bare-mvc-part-1 –

関連する問題