2010-06-04 83 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) 
    { 
    } 
} 

然後我創建一個自定義視圖引擎,並覆蓋FindView/FindPartialView ...

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); 
}