0

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

我目前最大的问题是,这两个过滤器的调用可靠性如何?

如果答案不是 100%,我认为最简单的方法是使用一些自定义过滤器(将它们的顺序指定为“第一个”和“最后一个”......

4

3 回答 3

3

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

于 2011-09-29T13:24:06.260 回答
1

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

于 2011-09-29T13:35:57.793 回答
0

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

代码的伟大之处在于,如果你理解它,如果给定相同的输入,它往往会每次都做完全相同的事情。

于 2011-09-29T13:25:19.513 回答