重写的操作是否从基本操作继承操作过滤器?

时间:2014-07-04 15:53:20

标签: c# asp.net-mvc override

在我的MVC应用程序中,我有一些通用的基本控制器,可以处理Create \ Edit \ Delete操作,并且可以在不对代码进行单一更改(除了为多个模型定义类)之外。偶尔我需要改变某个特定模型的基本操作之一,然后使用override来实现。现在,问题是,被覆盖的操作是否会从其基本版本继承操作过滤器,还是会丢失这些过滤器?

对于我的第二个,我认为我可以在现有代码中快速检查,但后来我意识到所有操作都可以正常工作。

我的直觉告诉我他们确实从基础行动中继承了(否则MVC会抱怨在仅发布操作的情况下采取模棱两可的行动),但我不太确定。

由于我无法在其他任何地方找到这个问题(更不用说答案),我认为即使对大多数人来说这是显而易见的,也值得一提。

1 个答案:

答案 0 :(得分:1)

ASP.NET MVC查找并尊重基本控制器类上的操作过滤器。应用于控制器类本身的操作过滤器。 See this.

如果基类具有标记为virtual / abstract的操作方法,则不会执行Overriden操作方法。

关于基类的动作过滤器的定义,您可以指定具有Inherited的AttributeUsage为false,因此它不适用于派生的

[System.AttributeUsage(System.AttributeTargets.All,
                   AllowMultiple = false,
                   Inherited = false)]