2009-03-16 2 views

답변

9

네,이 작업을 수행 할 수 있지만 사용하지 않은 방식입니다. 다음 내가 않았다

  1. 은 기본 컨트롤러 클래스를 만들고 모든 컨트롤러가 액션 필터 속성을 작성하고
  2. 에서 상속하고 FilterAttribute 및 IActionFilter에서 상속이
  3. 와 기본 컨트롤러 클래스를 장식

    public class SetCultureAttribute : FilterAttribute, IActionFilter 
    { 
        #region IActionFilter implementation 
    
        public void OnActionExecuted(ActionExecutedContext filterContext) 
        { 
         //logic goes here 
        } 
    
        public void OnActionExecuting(ActionExecutingContext filterContext) 
        { 
         //or logic goes here 
        } 
    
        #endregion IActionFilter implementation 
    } 
    
    : 새로운 액션 필터 속성 여기

는 액션 필터 속성의 샘플입니다

[SetCulture] 
public class ControllerBase : Controller 
{ 
    ... 
} 

한 컨트롤러 클래스는 SetCulture 액션 필터가 항상 실행됩니다 다음 ControllerBase에서 상속으로이 방법을 사용 :

다음은이 속성을 가진 기본 컨트롤러 클래스의 샘플입니다. 좀 더 자세히 알고 싶으면이 전체 샘플과 게시물을 on my blog에 보내주십시오.

희망 하시겠습니까?

+0

이는 ActionResults에 영향을 미칩니 까 있나요? 또는 다른 결과 유형에도 영향을 줍니까? JsonResult, FileResult 등? –

0

모든 작업에 적용 할 필요는 없습니다. 모든 컨트롤러에 적용 할 수 있습니다 (예 : 메서드가 아닌 클래스에 특성을 넣음).

또는 언급 한 것처럼 기본 컨트롤러 클래스에 배치 한 다음 해당 컨트롤러에서 확장 할 수 있습니다. 상황이 나아 어떻게

4

... 나중에 2 년 우리는

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
    { 
     filters.Add(new HandleErrorElmahAttribute()); 
    } 
+0

basallo - 어디에서 전화할까요? 아니면 넣어? –

+0

global.asax에서 –

관련 문제