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

本文关键字:调用 MVC 过滤器 何可 何时 | 更新日期: 2023-09-27 18:09:58

我想在控制器动作开始时设置一些"东西",并在渲染页面后将其拆除。我已经实现了这一点通过覆盖' onactionexecution '和' onresultperformed '过滤器(我使用MVC 2)。

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

如果答案不是100%的时间,我认为最简单的方法来推进这一点,将是使用一些自定义过滤器(指定他们的顺序为'first'和'last'…

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

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

如果你需要绝对的可靠性,你可能想要实现一个清理过滤器作为IExceptionFilter,并让它运行相同的清理代码作为你的onresultperformed覆盖(首先检查它还没有完成)。根据需要的"清理"类型,您可以简单地使用HandleErrorAttribute,我相信它仍然允许onresultperformed运行,因为它只是用Error视图的ViewResult替换结果。

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

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