C# 将数据从ModelBinder传递到自定义InputFormatter

C# 将数据从ModelBinder传递到自定义InputFormatter,c#,asp.net-core,modelbinder,inputformatter,C#,Asp.net Core,Modelbinder,Inputformatter,上下文:在Asp.net Core 2.1下的WebAPI中,我必须创建一个POST端点, [server]/MyController/{Parameter1}/MoreRouteThing/。我必须创建一个自定义的IInputFormatter,因为默认的格式化程序无法读取正文 问题:为了能够格式化输入,IInputFormatter需要知道参数1的值 我实现了一个定制的IModelBinder来处理这个模型,使用一个定制的IModelBinderProvider将所有东西连接到startup

上下文:在Asp.net Core 2.1下的WebAPI中,我必须创建一个POST端点,
[server]/MyController/{Parameter1}/MoreRouteThing/
。我必须创建一个自定义的
IInputFormatter
,因为默认的格式化程序无法读取正文

问题:为了能够格式化输入,
IInputFormatter
需要知道
参数1的值

我实现了一个定制的
IModelBinder
来处理这个模型,使用一个定制的
IModelBinderProvider
将所有东西连接到
startup.cs
中(可能有些过火,但我想了解整个链)

在自定义的
IModelBinder
中,我可以使用类似于
bindingContext.ActionContext.RoutedData.Values[“Parameter1”]
的东西访问
{Parameter1}
,但我不知道如何将其传递给
IInputFormatter
。前者将
InputFormatterContext
传递给后者,但该context对象中似乎没有任何内容适合存储额外信息


因此,问题是:如何将数据从
IModelBinder
传递到
IInputFormatter
?我是否应该直接从
IInputFormatter
解析url/路由,从而让它知道整个流程中的“位置”?(对我来说似乎不干净。)

所有格式化程序的列表通过modelbinder的构造函数传输,并且在将来选择一个与指定条件匹配的格式化程序。更多详细信息可在源代码中找到: 和

欢迎来到Stack Overflow,感谢您发布答案。我更喜欢它。