2012-02-17 5 views
1

私は2つのコントローラーを持っています。 HomeControllerおよびAccountControllerである。私は_Layout.cshtmlと部分ビュー_Login.cshtmlを持っており、_Layoutビューのヘッダーセクションに表示されます。 HomeControllerのデフォルト値はIndex()です。剃刀私を覚えていて、ユーザー情報を埋め込む

初めての場合、アカウントをお持ちですか?ログイン。ログインはAccountControllerのログインメソッドを指すリンクです。ログオンビューには、UserName、Passwordフィールド、およびRemember meのチェックボックスが含まれています。ユーザーが初めてログインし、Remember Meをチェックすると、MySecurityRepositoryと呼びます:ユーザーを検証し、プロファイル(住所、電話番号、電子メールなど)の基本情報を取得します。UserInfoオブジェクトはヘッダーにはUserNameがリンクとして表示されます。これはすべて動作します。

ユーザーがブラウザを閉じてサイトを再度開きます。ユーザーが既にログインしているのを確認しました。Request.IsAuthenticatedは本当ですが、ユーザーのプロフィールを再度取得してキャッシュする方法を教えてください。ここで

_Login部分図のように見えるものです...

<div id="login"> 
@if (Request.IsAuthenticated) 
{ 
    <text> 
     [@Html.ActionLink((HttpContext.Current.Session["UserInfo"] as UserInfo).FirstName, "Profile", "Account")] 
     [@Html.ActionLink("Log Off", "LogOff", "Account")] 
    </text> 
} 
else 
{ 
    <span>Have an account?</span> 
    @Html.ActionLink("Log In", "LogOn", "Account") 
} </div> 

感謝。

答えて

0

利用できない場合は、バックエンドからユーザー情報を取得する必要があります。このためには、セッションを最初に見ている子アクションを書き込むことができます。利用できない場合は、フェッチして内部に格納します。次に、Html.Actionヘルパーを使用して_Layoutにこの子の行動を含めることができます。

+0

私はMVC 3を学習しています。子どもの行動と呼ばれるものがあることを認識していませんでした。 – CodeWzrd

+0

@ CodeWzrdは、ASP.NET MVC 2で導入されたもので、各ビューに表示する必要のあるレイアウトの部分に対して別々のMVCライフサイクルを定義できるので非常に便利です。 –

関連する問題