我想在控制器操作开始时设置一些'东西',并在渲染页面后将其拆除。我通过覆盖'OnActionExecuting'和'OnResultExecuted'过滤器(我正在使用MVC 2)来实现这一点。
我目前面临的一个重要问题是,这两个过滤器的调用有多可靠?
如果答案不是100%的时间,我认为最简单的方法就是使用一些自定义过滤器(指定它们的顺序为'first'和'last'...
答案 0 :(得分:3)
100%的时间。它是MVC管道的一部分。如果他们不这样做,AuthorizeAttribute
将是一个相当大的安全漏洞。
答案 1 :(得分:1)
如果您需要绝对的可靠性,您可能希望将清理过滤器实现为IExceptionFilter,并使其运行与OnResultExecuted覆盖相同的清理代码(在首先检查它尚未完成之后)。根据需要什么样的“清理”,您可以简单地使用HandleErrorAttribute,我相信它仍然允许运行OnResultExecuted,因为它只是用错误的ViewResult替换结果图。
答案 2 :(得分:0)
如果没有可靠地调用内置过滤器,为什么自定义过滤器会更好?
关于代码的好处是,如果你理解它,如果给出相同的输入,它每次都会做同样的事情。