2009-08-24 4 views
1

다른 시스템을 모니터링하는 응용 프로그램을 빌드하고 있습니다. 이제 부분보기, "상태"라는 사용자 정의 컨트롤을 구현하고 싶습니다. 이 컨트롤은 application.Like에 대한 상태 정보를 표시한다보기에 데이터를 전달하십시오. 항상 viewData를 통해?

사용자가 로그인, 온라인

얼마나 많은 시스템,

최신 활동.

이 부분보기는 거의 모든 다른보기에서 렌더링되어야합니다. 이 정보를 어떻게 전달해야합니까?

내 모든 행동에

Wiewdata[“SystemsOnline”] = Helpers.CountSystemsOnline() 
Wiewdata[“SystemLatestActivity”] = ……………… 

을 쓰고 싶지 않아.

Html.RenderPartial (../ Shared/Status)와 같은 것을 쓸 수 있습니까? 주먹이 뷰 데이터를 추가하는 동작으로 이동합니까?

또는 나는 쪼그리고 헤플러를 통해 정보에 직접 액세스해야합니까?

Deflo LogOnUserControl보기가 Page.User.Identity.Name을 사용하여 해당 데이터에 직접 액세스하는 것으로 나타났습니다.

데이터를 컨트롤러에서 전달하지 않는 것이 좋은 경우는 언제입니까?

답변

2

이러한 목적으로 ViewData 클래스를 사용해야합니다. 대신 트릭을 발명하는 것이 좋습니다.

하지만 수작업으로에서 동일한 데이터를 전달할 때마다 액션을 전달해야합니다. 기본 컨트롤러에서 수행하십시오.

protected override void OnActionExecuted(ActionExecutedContext context) { 
    base.OnActionExecuted(context); 
    if (context.Result is ViewResult) { 
     // Pass the systems online to all views 
     ViewData[“SystemsOnline”] = Helpers.CountSystemsOnline(); 
    } 
} 

코드 몇 줄만 있으면 모든 곳에서 사용할 수 있습니다.

관련 문제