2010-06-04 3 views
2

ASP.NET MVC 사용자 정의 ... 나는 사용자 지정 특성을 쓰기 가정 사용자 정의보기 엔진

public class SpecialActionFilterAttribute : System.Web.Mvc.ActionFilterAttribute 
{ 
    public override void OnActionExecuted(ActionExecutedContext filterContext) 
    { 
    } 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     // set some parameters here. 
    } 
    public override void OnResultExecuted(ResultExecutedContext filterContext) 
    { 
    } 
    public override void OnResultExecuting(ResultExecutingContext filterContext) 
    { 
    } 
} 

속성 그리고 나서 사용자 정의 ViewEngine를 만들고, FindView/FindPartialView를 오버라이드 (override)

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) 
    { 
     // how can I get those parameters here? 

     return base.FindView(controllerContext, viewName, masterName, useCache); 
    } 

사용자 지정 특성을 사용하여 '플래그'정렬을 사용자 지정보기 엔진에 전달할 수 있기를 바랍니다. 이게 가능한가요?

답변

5
public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) 
{ 
    var controller = controllerContext.Controller; 

    var controllerType = controller.GetType(); 

    //now we can use reflection 
    var attributes = controllerType.GetAttributes(); 

    // how can I get those parameters here? 

    return base.FindView(controllerContext, viewName, masterName, useCache); 
}