2015-01-07 8 views
0

나는 BaseController 클래스를 상속받은 컨트롤러가 있습니다. 이 BaseController 속성 현재 사용자myUser입니다.컨트롤러에서 사용자 지정 작업으로 값을 집계합니다. 공헌 필터

나는 "사용자 지정 작업 필터 속성"을 만들었으며 나는이 atrtribute의 OnActionExecuting() 이벤트 내에서 참고 MyUser의 값에 액세스해야합니다.

이것이 가능합니까? 그렇다면 어떻게이 기능을 구현할 수 있습니까?

감사합니다.

답변

1

네, 당신은 그것을 할 수 있지만 먼저 공공보호에서 currentUser 속성을 변환하거나 읽기 전용 속성 또는 메서드를 통해 노출이있다.

그런 다음 당신이 필요합니다 대중에게 보호에서 참고 MyUser의 접근을 변경하려면 다음

var baseController = filterContext.Controller as BaseController; 
if (baseController != null) { 
    //Access your exposed **public** property or method 
    baseController.currentUser 
} 
1

당신은 'ActionExecutingContext'객체에 합격 한 것이다 OnActionExecuting 방법을 오버라이드 (override)하는 데있다.

그 목적은 현재의 컨트롤러 속성 컨트롤러를 갖는다. 원하는 유형인지 확인할 수 있습니다.

그래서 :

public override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    MyUser currentUser = null; 

    var controller = filterContext.Controller as BaseController; 
    if (controller != null) { 
    currentUser = controller.CurrentUser; 
    } 
} 
+0

그냥 약간의 변화를 사용하여 액세스 할 수 있지만 잘 작동합니다. 고맙습니다. – user3021830

+1

아, 네, 질문에 굵은 '보호 된'내용이 빠졌습니다 .... 독서 용 안경이 필요할 수도 있습니다. – Stephen