如何使用ASP.NET MVC ActionFilterAttribute / IResultFilter来修改输出

时间:2008-11-05 00:30:34

标签: asp.net-mvc

我正在尝试修改输出流以搜索/替换从View返回的一些XHTML标记。我可以使用传统的ASP.NET响应过滤器,但首先考虑尝试ASP.NET MVC动作过滤器。

public class MyResultFilter : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {            
        base.OnResultExecuting(filterContext);
    }
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        ViewResult viewResult = filterContext.Result as ViewResult;
        Debug.WriteLine("OnResultExecuted");
        base.OnResultExecuted(filterContext);
    }   
}

我无法确定如何修改或获取viewResult输出流。 Web上的示例仅显示日志记录基本属性,从不修改结果。

1 个答案:

答案 0 :(得分:3)

我认为使用ActionFilterAttribute执行此操作并不是一个好主意,因为它专门用于控制器级别的决策,而不是特定于HTML请求后处理。正确执行此操作的最佳方法是创建特定的基本View类甚至ViewEngine,或者使用旧的HttpModule,因为它们是为您尝试的事情创建的。欢呼声。