簡體   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