ASP.NET Core 2.x. 是否可以从为请求运行的操作过滤器更改参数的模型绑定器? 例如:
[HttpPost("{id}")]
[TypeFilter(typeof(MyResourceFilter))]
public async Task<IActionResult> Foo([FromRoute(Name="id")] Bar, [FromBody] Baz baz)
MyResourceFilter
IAsyncResourceFilter
实现会查看绑定源为Bar
或BindingSource.Path
的{{1}}类型的任何参数,并执行以下操作:
BindingSource.Query
的实例(例如,在这种情况下为Bar
的值)id
设置为BindingInfo
并将BindingSource
设置为BindingSource.Custom
(其BinderType
实施使用缓存来修改此参数的MyResourceFilter
来自资源过滤器实现的值)尽管为参数的BindingInfo设置了BindingSource和BinderType,但是不会调用自定义模型绑定代码。我可以通过在参数声明之前添加IModelBinder
来调用它,但我不愿意这样做,因为为了便于使用,我只想指定一次类型。
我可以进入为什么我按照自己的方式做事的原因,但我更愿意简单地知道这是否可行。