Do覆盖操作从基本操作继承操作过滤器

本文关键字:操作 继承 过滤器 基本操作 覆盖 Do | 更新日期: 2023-09-27 18:11:33

在我的MVC应用程序中,我有几个通用的基本控制器,用于处理创建'编辑'删除操作,并且无需对多个模型的代码进行单个更改(除了定义类)。偶尔我需要改变一些特定模型的基本动作之一,我使用override实现这一目标。现在,问题是,被覆盖的操作是否从其基本版本继承操作过滤器,还是丢失这些过滤器?

我想我可以在我现有的代码中快速检查,但后来我意识到所有的动作都可以以任何方式工作。

我的直觉告诉我,他们确实继承了基本的行动(否则MVC会抱怨模棱两可的行动的情况下,仅post的行动),但我不太确定。

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

Do覆盖操作从基本操作继承操作过滤器

. NET MVC查找并尊重基控制器类上的动作过滤器。应用于控制器类本身的那个。看到这个。

如果基类的操作方法被标记为virtual/abstract,则重写的操作方法将不会执行。

在基类的动作过滤器的定义中,你可以指定AttributeUsage并将Inherited设置为false,因此它不适用于派生类

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