繁体   English   中英

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

[英]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.cshttps:// github。 COM / ASPNET / AspNetCore /斑点/主/ SRC / MVC / Mvc.Core / SRC / ModelBinding /粘合剂/ BodyModelBinderProvider.cs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM