C# 将数据从ModelBinder传递到自定义InputFormatter
上下文:在Asp.net Core 2.1下的WebAPI中,我必须创建一个POST端点,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
[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,感谢您发布答案。我更喜欢它。