全站搜索
倾城娱乐注册-倾城登录平台-招商app
倾城娱乐注册-倾城登录平台-招商app
  • 倾城娱乐注册
  • 倾城娱乐登录
  • 倾城娱乐招商QQ
  • Core MVC 之过滤器(Filter)
    作者:admin 发布于:2022-08-06 06:37 文字:【】【】【

      ASP.NET MVC 中的过滤器答允在增添管道中的特定阶段之前或之后运行代码。没合系对全局,也无妨对每个掌握器或每个驾驭安排过滤器。

      诀别的过滤器范例在管途中的别离阶段扩展,是以具有各自的与其场景。遵守需求扩充的负担以及须要推行的苦求管途中的园地,选提要创筑的过滤器表率。过滤器在 MVC 掌管移用管途中运行,不常也称为过滤管道,在 MVC 被选择要增加的职掌后,推广掌管上的过滤器,如图:

      永诀的过滤器在管途内的永别场地推广。像授权过滤器这样的过滤器只在管途中靠前的场所推行。其他过滤器,如担任(Action)过滤器,可能在管道增添的其你个别之前和之后执行,如图:

      资源过滤器是在授权之后第一个管束乞求的过滤器,也是末端一个在乞求分开过滤管道时交战恳求的过滤器。在职能方面,对收工缓存或许对过滤管途进行短路 非常有用。

      左右过滤器包装对单个负责方式的挪用,并且无妨照料通报到掌管的参数以及从支配返回的操作结束。

      完毕过滤器包装单个把握完结的执行,而且尽在支配扩充乐成时运行。它们必须是缠绕视图增加或式子化次序推行的逻辑的理思挑撰。

      一概过滤器均可体验不同的接口定义布施同步和异步的实现。遵循须要增添的任务类型,挑撰同步或异步竣工。从框架的角度看,它们是能够变换的。

      过滤器有三种判袂级另外感化域。我不妨在特定的掌握上用性情(Attribute)的格局应用特定的过滤器。也无妨在掌握器上用性格的样子欺骗过滤器,这样就没合系将收效效用在管制器内的一共支配上。恐怕备案一个全体过滤器,它将效率于整体 MVC 诈骗依次的每一个驾御。

      过滤器既可能体验类型填充,也可能体验实例添加。假使始末实例添加,则该实例会被使用于每一个哀求。假使履历楷模扩大,则在每次请求后都市创筑一个实例,其悉数圈套函数倚赖项都将经验 DI 来填补。

      把过滤器接口的完工算作特性愚弄也很是利便。过滤器性子可操纵于左右器和担任办法。框架网罗了内置的基于本性的过滤器,无妨负担大家可能其它定制。比方,下面的过滤器承担了 ResultFilterAttribute,并钞写 OnResultExecuting 方法(在呼应中推广一个音尘头):

      特性许愿过滤器承担参数,如下,可将此本质扩大到把握器或驾御中,并为其指定所需 HTTP 头的名称和值:

      经历兴办传入过滤器方法的凹凸文参数中的 Result 属性,可以在过滤器管途的肆意一点短道管道。比如,下面的 ShortCircuitingResourceFilter 将阻遏它之后管道内的一齐过滤器,征采整体掌管过滤器:

      全体过滤器在 Startup 中陈设。基于性情的过滤器借使不须要任何寄托,没关系大意地担当一个已保存地过滤器相对应地性质规范。倘若要创建一个非整体效率域,但须要从寄托注入中得到寄托项的过滤器,那么在它们上面加上 ServiceFilterAttribute 或 TypeFilterAttribute 本性,如此就可用于把持器或独揽了。

      以性格花样竣工的,直接添补到左右器或支配的过滤器,其组织函数不得由寄托注入提供依靠项。其来源在于,个性所需的结构函数参数必要由运用处直接供给。这是脾气原型机理的限制。

      假设过滤器需要从 DI 中得到依赖项,那么没关系用以下几种式样在类或驾驭方式运用:

      由于这种阔别,诈骗 TypeFilterAttribute 引用的类型不必要在诈欺前向容器注册,但它们仍由容器来添补其依附项。别的,TypeFilterAttribute 无妨可选的担任该样板的结构函数参数。下面是 TypeFilterAttribute 树范:

      假若有一个大略的过滤器,不需要任何参数,但有结构函数需要始末 DI 扩展仰仗项,那么可能担负 TypeFilterAttribute,答应欺骗本身命名的天性类和办法(而不是 [TypeFilterAttribute(typeof(FilterType))])。下面的过滤器暴露了何如完毕此见效:

      IFilterFactory 完竣 IFilter ,因此在过滤器管道中,任何场所的 IFilterFactory 实例都可作为 Filter 实例来使用。当框架预备调用过滤器时,将实验将其调换为 IFilterFactory 。倘使调换告成, 则移用 CreateInstance 办法来创修将被移用的 IFilter 实例。这是一种万分伶俐的设计,来历当愚弄递次启动时,不需求分明地修立精确地过滤器。

      你们能够在自身地性情中告终 IFilterFactory 几口,作为另一种创建过滤器的方式:

      过滤器可以应用于把握形式或掌管器(通过性格)或增添到整体过滤器集闭中。感化域经常也决心了排序,最切近担任的过滤器起初运行。

      除了效力域,过滤器还没合系阅历完毕 IOrderedFilter 来钞缮它们的推行法则。此接口大概的败事了一个 int Order 属性,并且过滤器基于该属性以数字升序引申。统统内置的过滤器,收集 TypeFilterAttribute 和 ServiceFilterAttribute ,都告终 IOrderedFilter 接口。,是以当将过滤器性格使用于类或体例时,能够指定过滤器实行纪律。默认情状下,一共内置过滤器的 Order 属性都为0,所以边界用作隔离符,并且是锐意性成分(除非 Order 兴办为 0)。

      每个从 Controller 基类负担的节制器都囊括 OnActionExecuting 和 OnActionExecuted 方式。这些办法为给定掌管包装了过滤器,它们辨别最先运行和末了运行。假若没有为任何过滤器兴办 Order 舒总,那么单纯基于界限的法则为:

      要勘误默认的基于畛域的次序,则应展示修树类级别可能办法级别过滤器的 Order 属性。比方,将 Order = -1 增加到办法级属性:

      Controller 类的办法总是在扫数过滤器之前和之后运行。这些式样不算作IFilter实例收工。也不参预IFilter排序算法。

      但凡来谈,过滤器用于管制业务与诈欺次序的横切关心点,用法和奏效很像中心件,但过滤器允诺全班人将作用边界屈曲,并将其插入到愚弄依次中故意义的场合,例如视图之前或模型绑定之后。过滤器是 MVC 的一片面,不妨看望其凹凸文和陷坑函数。譬喻,中间件很难检测到哀求的模型验证是否发作错误,况且做出反响的反应。返回搜狐,巡视更多

    相关推荐
  • 衢州过滤器
  • Core MVC 之过滤器(Filter)
  • Domnick Hunter多明尼克紧缩气氛过滤器滤芯除菌过滤器滤芯
  • 缔造手动喷雾过滤器原料可靠喷雾过滤器
  • yjqs-c压风管路气水告辞过滤器大小分别 把握连接
  • 希而科物业控制作战(上海)有限公司
  • 江苏盐城自愿反洗濯过滤器滤芯厂家
  • 2022-2027年华夏有隔板高效过滤器行业浸点企业生长发挥及投资前景可行性评估关
  • 开箱一款黑科技超强过滤器据谈田地脏水都也许直接饮用
  • 【菲贝过滤】自愿排渣过滤器的事情理由、构造特点和行业诈骗
  • 脚注信息
    Copyright © 2025 倾城娱乐注册-倾城登录平台-招商app TXT地图 HTML地图 XML地图