이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 21438|회답: 3

[ASP.NET] mvc custom filter ActionFilterAttribute 클래스

[링크 복사]
게시됨 2016. 1. 6. 오후 3:32:33 | | |

앞서 소개한 필터들이 요구사항을 충족하지 못할 경우, 이 커스텀 필터가 동작 메서드를 실행하고 반환되기 전후에 자신만의 처리 로직을 정의하고 싶을 때 유용할 것입니다. 필터를 커스터마이즈하려면 ActionFilterAttribute 클래스를 상속하는데, 이는 IActionFilter와 IResultFilter 인터페이스를 구현하는 추상 클래스로, 주로 동작 메서드 실행 및 반환 전후에 주입 논리를 구현하기 위해 네 가지 가상 메서드를 다시 작성함으로써 이루어집니다

메서드
매개 변수
묘사
OnActionExecuting
액션실행컨텍스트
동작 메서드가 실행되기 전에 실행하세요
실행된 행동
ActionExecutedContext
행동 메서드가 실행된 후 실행됩니다
OnResultExecuting
결과실행컨텍스트
행동 메서드가 반환되기 전에 실행하세요
결과실행됨
결과실행컨텍스트
동작 메서드가 반환된 후 실행하세요

네 가지 메서드는 OnActionExecuting>OnActionExecuted>OnResultExecuting>OnResultExecuted 순서로 실행됩니다. 위 네 가지 방법의 인수는 ContollorContext 클래스에서 유래한 것입니다. 예를 들어, 아래에는 맞춤형 필터가 정의되어 있습니다


  1. public class MyCustomerFilterAttribute : ActionFilterAttribute
  2.     {
  3.         public string Message { get; set; }

  4.         public override void OnActionExecuted(ActionExecutedContext filterContext)
  5.         {
  6.             base.OnActionExecuted(filterContext);
  7.             filterContext.HttpContext.Response.Write(string.Format( "<br/> {0} Action finish Execute.....",Message));
  8.         }

  9.         public override void OnActionExecuting(ActionExecutingContext filterContext)
  10.         {
  11.             CheckMessage(filterContext);
  12.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action start Execute.....", Message));
  13.             base.OnActionExecuting(filterContext);
  14.         }

  15.         public override void OnResultExecuted(ResultExecutedContext filterContext)
  16.         {
  17.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action finish Result.....", Message));
  18.             base.OnResultExecuted(filterContext);
  19.         }

  20.         public override void OnResultExecuting(ResultExecutingContext filterContext)
  21.         {
  22.             filterContext.HttpContext.Response.Write(string.Format("<br/> {0} Action start Execute.....", Message));
  23.             base.OnResultExecuting(filterContext);
  24.         }

  25.         private void CheckMessage(ActionExecutingContext filterContext)
  26.         {
  27.             if(string.IsNullOrEmpty( Message)||string.IsNullOrWhiteSpace(Message))
  28.                 Message = filterContext.Controller.GetType().Name + "'s " + filterContext.ActionDescrip{过滤}tor.ActionName;
  29.         }
  30.     }
코드 복사

이를 사용하는 행동 방법은 아래에 정의되어 있습니다

  1. [MyCustomerFilter]
  2.         public ActionResult CustomerFilterTest()
  3.         {
  4.             Response.Write("<br/>Invking CustomerFilterTest Action");
  5.             return View();
  6.         }
코드 복사







이전의:잘 알려진 호스팅 서비스 제공업체인 Linode가 해킹 의혹을 받고 있으며, 사용자는 가능한 한 빨리 비밀번호를 변경해야 합니다
다음:Memcache는 나열된 모든 주요 메서드를 확인합니다
 집주인| 게시됨 2016. 10. 25. 오전 10:00:36 |
 집주인| 게시됨 2019. 8. 10. 오후 10:16:41 |
.NET MVC 필터 실행 순서:

IAuthorizationFilter(OnAuthorization)----->IActionFilter(OnActionExecuting)---->

컨트롤러 액션()---->IActionFilter(OnActionExecuted) ---->IResultFilter(OnResultExecuting) ---->

view()---->IResultFilter(OnResultExecuted)

또한, 동일한 필터 실행 순서: 위에서 아래까지, 근접 원칙:




Filter2=>Filter1
게시됨 2019. 8. 26. 오후 1:24:19 |
마크, 박식함
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com