[英]Passing data from a ModelBinder to a custom InputFormatter
上下文 :在Asp.net Core 2.1下的WebAPI中,我必须创建一个POST端点[server]/MyController/{Parameter1}/MoreRouteThing/
。 我必须创建一个自定义IInputFormatter
因为默认格式化程序无法读取该正文。
问题 :为了能够格式化输入, IInputFormatter
需要知道Parameter1
的值。
我实现了一个自定义的IModelBinder
来处理此模型,并使用自定义的IModelBinderProvider
startup.cs
中的所有内容连接起来(可能IModelBinderProvider
过头,但是我想了解整个链。)
在自定义IModelBinder
,我可以使用类似于bindingContext.ActionContext.RouteData.Values["Parameter1"]
方式访问{Parameter1}
,但是我不知道如何将其传递给IInputFormatter
。 前者将InputFormatterContext
传递给后者,但是该上下文对象中的任何内容似乎都不适合存储额外的信息。
那么问题来了 :如何将数据从IModelBinder
传递到IInputFormatter
? 我应该改为直接从IInputFormatter
解析url / route,从而使它知道整个过程中的“位置”吗? (对我来说似乎不干净。)
所有格式化程序的列表都是通过modelbinder的构造函数传输的,将来会选择与指定条件匹配的格式化程序。 可以在源代码中找到更多详细信息: https: //github.com/aspnet/AspNetCore/blob/master/src/Mvc/Mvc.Core/src/ModelBinding/Binders/BodyModelBinder.cs和https:// github。 COM / ASPNET / AspNetCore /斑点/主/ SRC / MVC / Mvc.Core / SRC / ModelBinding /粘合剂/ BodyModelBinderProvider.cs
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.