没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
全文可编辑 word 文档 页眉与背景水印可删除
1
在 Asp.Net Core 中使用 ModelConvention 实
现全局过滤器隔离
从何说起
这来自于我把项目迁移到 Asp.Net Core 的过程中碰到
一个问题。在一个 web 程序中同时包含了 MVC 和 WebAPI,现
在 需 要 给 WebAPI 部 分 单 独 添 加 一 个 接 口 验 证 过 滤 器
IActionFilter ,常规做法一般是写好过滤器后给需要的控
制器挂上这个标签,高级点的做法是注册一个全局过滤器,
这样可以避免每次手动添加同时代码也更好管理。注册全局
过滤器的方式为:
services.AddMvc(options =>
{
options.Filters.Add(typeof(AccessControlFil
ter));
});
但这样做会带来一个问题,那就是 MVC 部分控制器也会
受影响,虽然可以在过滤器中进行一些判断来区分哪些是
MVC Controller 哪些是 API Controller,但是平白无故给
MVC 增加这么一个没用的 Filter,反正我是不能忍,所以寻
找有没有更好的办法来实现这个功能。
全文可编辑 word 文档 页眉与背景水印可删除
2
于是 ModelConvention(可以翻译为模型约定)闪亮登
场。
先认识下 ApplicationModel
看 一 下 官 方 文 档 是 怎 么 描 述 应 用 程 序 模 型
(ApplicationModel)的:
ASP.NET Core MVC defines an application model
representing the components of an MVC app. You can read
and manipulate this model to modify how MVC elements
behave. By default, MVC follows certain conventions to
determine which classes are considered to be
controllers, which methods on those classes are actions,
and how parameters and routing behave. You can
customize this behavior to suit your app's needs by
creating your own conventions and applying them
globally or as attributes.
简单一点说,ApplicationModel 描述了 MVC 应用中的各
种对象和行为,这些内容包含 Application、Controller、
Action、Parameter、Router、Page、Property、Filter 等
等,而 Asp.Net Core 框架本身内置一套规则(Convention)
用来处理这些模型,同时也提供了接口给我们自定义约定来
扩展模型以实现更符合需要的应用。
和 应 用 程 序 模 型 有 关 的 类 都 定 义 在 命 名 空 间
全文可编辑 word 文档 页眉与背景水印可删除
3
Microsoft.AspNetCore.Mvc.ApplicationModels 中,这些模
型通过 IApplicationModelProvider 构建出来,Asp.Net
Core 框 架 提 供 的 默 认 Provider 是
DefaultApplicationModelProvider 。我们可以编辑这些模
型 , 从 而 更 改 它 的 表 现 行 为 , 这 就 要 借 助 它 的
ModelConvention 来实现。
ModelConvention
ModelConvention 定义了操作模型的入口,又或者说是
一 种 契 约 , 通 过 它 我 们 可 以 对 模 型 进 行 修 改 , 常 用 的
Convention 包括:
IApplicationModelConvention
IControllerModelConvention
IActionModelConvention
IParameterModelConvention
IPageRouteModelConvention
这些接口提供了一个共同的方法 Apply ,方法参数是各
自的应用程序模型,以 IControllerModelConvention 为例
看一下它的定义:
namespace
Microsoft.AspNetCore.Mvc.ApplicationModels
剩余11页未读,继续阅读
资源评论
mmoo_python
- 粉丝: 0
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功