コンテンツモデルがapplication/jsonであるという要求を使用して、アクションモデルからインターフェイスモデルをバインドします。私は私のアクションメソッドで[FromBody]属性を使用しています。ASP.NET Core MVC - Model Binding:[FromBody](BodyModelBinder)という属性を使用してインターフェイスモデルをバインドします。
ComplexTypeModelBinderから派生したカスタムmodelBinderをこのリンク:Custom Model Binding in Asp.net Core, 3: Model Binding Interfacesで作成しようとしましたが、動作しません。私のモデルは常にnullです。その後、atribute [FromBody]を使用すると、BodyModelBinderが呼び出され、内部的にJsonInputFormatterが呼び出され、カスタムmodelBinderは使用されません。
私はインターフェイスモデルをバインドする方法を探しています。 MVC DIを使用して、各インタフェースをその実装とマッピングすることができます。私は私のインターフェイスでたmetadataType属性を使用して、別のソリューションを試みたが、それは名前空間System.ComponentModel.DataAnnotationsに存在しないと私はasp.netコアMVCのdoesnを読ん
public async Task<IActionResult> Create(IOperator user)
{
if (user == null)
{
return this.BadRequest("The user can't not be null");
}
if (!this.ModelState.IsValid)
{
return this.BadRequest(this.ModelState);
}
IOperator op = await this.AuthenticationFrontService.CreateOperatorAsync(user.Login, user.Password, user.FirstName, user.LastName, user.ValidUntil, user.Role, user.Comment);
return new CreatedAtActionResult("Get", "operators", new { id = ((Operator)op).Id }, op);
}
:私のアクションメソッドは次のように定義されこの属性を使用しないでくださいAsp.Net MVC MetaDataType Attribute not working。 ModelDataType属性を使用するために、ドメインモデルプロジェクトにmicrosoft.aspnetcore.mvc.dataannotationsパッケージをインストールしたくありません。
カスタムJsonInputFormaterを作成して別の解決策を試しました。つまり、JsonInputFormatterクラスを派生し、ソースコードを分析して、JsonSerializerが論理インターフェイスを逆シリアル化できないことがわかりました。だから私は解決策を探しています私はカスタムjsonserializerおそらくリゾルバまたは汎用コンバータを使用することができます。
ご協力いただきますようお願い申し上げます。
ありがとうございました。
壊れたリンク。このため、私たちはリンクのみの回答を投稿しません。 – brainbolt