OnActionExecuting
에서 특정 조건이 충족되면 전체 동작 메서드 실행을 건너 뛰고 특정 ActionResult
을 반환 할 수 있습니까?ActionFilter에서 액션 실행을 건너 뛰는 방법은 무엇입니까?
답변
이 경우 filterContext.Result를 사용할 수 있습니다.
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
//Check your condition here
if (true)
{
//Create your result
filterContext.Result = new EmptyResult();
}
else
base.OnActionExecuting(filterContext);
}
내 다운로드 샘플 및 MSDN 문서 Filtering in ASP.NET MVC을 참조하십시오.
Result
속성을 null이 아닌 값으로 설정하여 OnActionExecuting
및 OnResultExecuting
메서드에서 필터 실행을 취소 할 수 있습니다.
보류 중일 경우 OnActionExecuted
및 OnActionExecuting
필터가 호출되지 않고 취소 된 필터 또는 보류 중 필터에 대해 호출자가 OnActionExecuted
메서드를 호출하지 않습니다.
이전에 실행 한 필터에 대한 OnActionExecuted
필터가 실행됩니다. OnResultExecutingand
OnResultExecuted
필터가 모두 실행됩니다.
샘플에서 다음 코드는 특정 조건이 OnActionExecuting
에 충족 될 때 특정 ActionResult
을 반환하는 방법을 보여줍니다
if (filterContext.RouteData.Values.ContainsValue("Cancel"))
{
filterContext.Result = new RedirectResult("~/Home/Index");
Trace.WriteLine(" Redirecting from Simple filter to /Home/Index");
}
두 개 이상의 필터가 있고 필터의 순서가 중요한 경우 필터를 등록 할 때 "Order"매개 변수를 지정하여 실행 순서를 제어 할 수 있도록해야합니다. Rick이 결과에 대한 세부 정보에서 설명한대로 filterContext.Result 속성이 작동합니다. –
좋은 지적 Nick - 내 섹션 참조 Filter Order - order 속성은 같은 클래스의 필터에만 적용됩니다. Auth는 항상 first, exception, last를 실행합니다. – RickAndMSFT
당신은 여기에 다음과 같은 코드를 사용할 수 있습니다.
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
...
if (needToRedirect) //your condition here
{
...
filterContext.Result = new RedirectToAction(string action, string controller)
return;
}
...
}
RedirectToAction은 조건에 따라 특정 동작을 리디렉션합니다.
RedirectToAction은 (적어도 MVC5에서는) 메소드이므로 new() 할 수 없습니다. – rumblefx0
- 1. 특정보기로 건너 뛰는 방법은 무엇입니까?
- 2. 이 루프를 건너 뛰는 방법은 무엇입니까?
- 3. MySQL INSERT를 건너 뛰는 적절한 방법은 무엇입니까
- 4. 보고서에서 빈 페이지를 건너 뛰는 방법은 무엇입니까?
- 5. 문자열을 분리하고 공백을 건너 뛰는 방법은 무엇입니까?
- 6. 몽고이 문서에서 콜백을 건너 뛰는 방법은 무엇입니까?
- 7. `foreach` 루프의 반복을 건너 뛰는 방법은 무엇입니까?
- 8. Drupal에서 함수를 건너 뛰는 방법은 무엇입니까?
- 9. Android gps 거리를 건너 뛰는 방법은 무엇입니까?
- 10. javascript를 사용하여 필드를 건너 뛰는 방법은 무엇입니까?
- 11. vim에서 특정 캐릭터로 건너 뛰는 방법은 무엇입니까?
- 12. __autoload를 사용하여 건너 뛰는 방법은 무엇입니까?
- 13. PHPunit에서 테스트를 건너 뛰는 방법은 무엇입니까?
- 14. AOT를 건너 뛰는 이유는 무엇입니까?
- 15. Spring에서 특정 작업 실행을 건너 뛰는 방법 Quartz Scheduler
- 16. 글로브 건너 뛰는 파일
- 17. getline을 건너 뛰는 루프
- 18. 문을 건너 뛰는 경우
- 19. 조부모 방법을 실행하기 위해 부모 메서드 실행을 건너 뛰는 방법은 무엇입니까?
- 20. 스트림에서 바이트를 건너 뛰는 방법
- 21. enum 캐스팅을 건너 뛰는 경우
- 22. 일부 코드가 건너 뛰는 이유는 무엇입니까?
- 23. array.shift가 값을 건너 뛰는 이유는 무엇입니까?
- 24. ELSE 문을 건너 뛰는 이유가 무엇입니까?
- 25. EnumChildWindows가 자식을 건너 뛰는 이유는 무엇입니까?
- 26. RedirectToAction ActionFilter에서
- 27. Maven reactor를 사용할 때 테스트를 건너 뛰는 방법은 무엇입니까?
- 28. Maven 빌드에서 JSLint 목표를 건너 뛰는 방법은 무엇입니까?
- 29. Access 2007에서 시작 폼을 건너 뛰는 방법은 무엇입니까?
- 30. Google 웹 로그 분석로드를 건너 뛰는 방법은 무엇입니까?
조건이 true 일 때 왜 base.OnActionExecuting을 건너 뛰나요? 내 경우에는 결과를 설정하기 전에 실행해야합니다. – xr280xr