2012-02-17 4 views
1

나는 컨트롤러가 2 개 있습니다. HomeControllerAccountController. 나는 _Layout.cshtml이고, 부분 뷰 _Login.cshtml_Layout 뷰의 헤더 섹션에서 렌더링됩니다. HomeController의 기본값은 Index()입니다.면도기 내 정보 기억 및 사용자 정보 입력

처음으로 사용자에게 계정이 있습니까? 로그인. 로그인은 AccountController의 로그인 메소드를 가리키는 링크입니다. 로그온보기에는 UserName, Password 필드 및 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 라이프 사이클을 정의 할 수 있으므로 매우 유용합니다. –

관련 문제