gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:50:52 31 4
gpt4 key购买 nike

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

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

我实现了一个自定义的 IModelBinder 来处理这个模型,使用自定义的 IModelBinderProvider 将所有内容连接到 startup.cs(可能有点矫枉过正,但我想了解整个链条。)

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

那么问题:如何将数据从IModelBinder 传递到IInputFormatter?我是否应该直接从 IInputFormatter 解析 url/route,从而让它知道它在整个过程中的“位置”? (我觉得不干净。)

最佳答案

所有格式器的列表通过模型绑定(bind)器的构造函数传输,将来会选择一个与指定条件匹配的格式器。可以在源代码中找到更多详细信息: https://github.com/aspnet/AspNetCore/blob/master/src/Mvc/Mvc.Core/src/ModelBinding/Binders/BodyModelBinder.cshttps://github.com/aspnet/AspNetCore/blob/master/src/Mvc/Mvc.Core/src/ModelBinding/Binders/BodyModelBinderProvider.cs

关于c# - 将数据从 ModelBinder 传递到自定义 InputFormatter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51830213/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com