2010-03-19 5 views
1

상자 형태의 인증을 사용하여 수행 할 수없는 정교한 인증 및 비즈니스 로직을 필요로하는 ASP.NET MVC2 웹 응용 프로그램을 구축하고 있습니다. MVC 그래서 나와 함께 곰에MVC2 : ViewRequest를 가로 채고 ActionResult를 변경하는 가장 좋은 방법

나는

내 계획은 하나 개 이상의 사용자 지정 특성 (추가 데이터를 포함하는) 모든 제한보기 방법을 표시했다 ... 새로운 해요.

컨트롤러는 OnActionExecuting 메서드를 재정 의하여 요청을 가로 채고 대상보기의 특성을 분석하고 사용자를 다른 위치로 다시 라우팅하는 등 다양한 작업을 수행합니다.

차단 및 특성 분석이 작동하지만 리디렉션이 예상대로 작동하지 않습니다.

ActionExecutingContext.Result를 null로 설정하려고 시도했으며 리플렉션을 통해 컨트롤러를 스풀링하고 액션 메소드를 호출하기까지했습니다. 주사위가 없다.

나는

protected override void OnActionExecuting(ActionExecutingContext filterContext) 
{ 
    filterContext.HttpContext.Response.Redirect("/MyView", false); 
    base.OnActionExecuting(filterContext); 
} 

이 해킹 같은 것, 그리고 더 나은 방법이 있어야한다 ...

답변

2

우선, 거위의 수컷에서이 ... 이런 식으로 달성 할 수 있었다 스티브 샌더슨의 프로 ASP.Net MVC 도서. actionfilters와 컨트롤러 수명주기에 대한 섹션은 당신에게 중요합니다. 대부분의 경우, '정규적인'actionfilter가 얻지 못하는 Authorize 필터에 대한 특별한 대우가 있습니다.

filterContext.Result = new RedirectToRouteResult(/*params*/); 

을하고 원하는 효과를 얻을 : 두 번째

, 당신은이 작업을 수행 할 수 있어야합니다.

+0

도움을 주셔서 감사합니다! – ctorx

관련 문제