2011-03-08 3 views
6

에서 로직을 구현하는 방법은 MVC 여전히 새로운, 그래서 내가 일하고 있어요 커뮤니티 사이트를 가지고는 "masterpage"수준

:-) 나와 함께 곰, 나는 싶습니다 사용자가 로그인 됐어요 후 내 모든 페이지에 온라인으로 얼마나 많은 사용자를 보여줍니다.

을 내가 로그인 (UserLayout.cshtml) 후 모든 페이지 레이아웃으로 사용되는 공유보기

있어 수 어떻게 든 내 공유 레이아웃에 온라인 카운트를 표시하는 논리를 추가 하시겠습니까?

WebForms라면 masterpage에 대한 코드 숨김 기능이 있지만이 옵션은 분명히 아닙니다.

온라인 사용자 정보는 캐시에서 가져옵니다. 내 View Model의 속성으로 사용할 수 없습니다.

답변

8

당신은 (아주 작은 뷰를 사용하여) 정보

그런 다음 레이아웃 페이지에서 렌더링하는 Html.Action를 호출 할 수 있습니다 렌더링 작업을 작성할 수 있습니다.

1

'UserLayoutModel'클래스를 만들고 다른 모든 뷰 모델을 파생시킬 수 있습니다. 또한 'RenderAction'을 사용하여 UI의 일부를 별도로 렌더링 할 수 있습니다 (이 동작을 ChildActionOnly 특성으로 표시해야 함).

0

내가 한 것은 모든 컨트롤러에서 상속 한 BaseController.cs를 만들고 기본 컨트롤러에서 OnActionExecuting을 재정의 할 수 있으며 여기서 설정 한 모든 viewdata 값을 마스터 페이지에서 사용할 수 있습니다.

protected override void OnActionExecuting(ActionExecutingContext filterContext) { 
    base.OnActionExecuting(filterContext); 
} 
0

글로벌 액션 필터를 만들 수 있습니다.

일반적으로 작업 필터를 메서드 또는 클래스 ([HttpPost])에 특성으로 추가합니다. 글로벌 액션 필터를 사용하면 특정 클래스에서 상속하지 않고도 모든 액션에 코드를 추가 할 수 있습니다. 그것은 각각의 모든 Action 메소드에 속성을 추가 한 것과 같습니다.

This article explains a lot.