何时以及如何可靠地调用MVC过滤器?

时间:2011-09-29 13:22:41

标签: c# model-view-controller filter installation teardown

我想在控制器操作开始时设置一些'东西',并在渲染页面后将其拆除。我通过覆盖'OnActionExecuting'和'OnResultExecuted'过滤器(我正在使用MVC 2)来实现这一点。

我目前面临的一个重要问题是,这两个过滤器的调用有多可靠?

如果答案不是100%的时间,我认为最简单的方法就是使用一些自定义过滤器(指定它们的顺序为'first'和'last'...

3 个答案:

答案 0 :(得分:3)

100%的时间。它是MVC管道的一部分。如果他们不这样做,AuthorizeAttribute将是一个相当大的安全漏洞。

答案 1 :(得分:1)

如果您需要绝对的可靠性,您可能希望将清理过滤器实现为IExceptionFilter,并使其运行与OnResultExecuted覆盖相同的清理代码(在首先检查它尚未完成之后)。根据需要什么样的“清理”,您可以简单地使用HandleErrorAttribute,我相信它仍然允许运行OnResultExecuted,因为它只是用错误的ViewResult替换结果图。

答案 2 :(得分:0)

如果没有可靠地调用内置过滤器,为什么自定义过滤器会更好?

关于代码的好处是,如果你理解它,如果给出相同的输入,它每次都会做同样的事情。