[英]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.cs和https:// github。 COM / ASPNET / AspNetCore /斑點/主/ SRC / MVC / Mvc.Core / SRC / ModelBinding /粘合劑/ BodyModelBinderProvider.cs
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.