Ich möchte ein Interface-Modell von meiner Aktionsmethode mit einer Anfrage binden, dass der Inhaltstyp application/json ist. Ich verwende das Attribut [FromBody] in meiner Aktionsmethode.ASP.NET Core MVC - Modellbindung: Bindet ein Schnittstellenmodell mit dem Attribut [FromBody] (BodyModelBinder)
Ich habe versucht, eine benutzerdefinierte ModelBinder von ComplexTypeModelBinder abgeleitet, indem Sie folgenden Link: Custom Model Binding in Asp.net Core, 3: Model Binding Interfaces, aber es funktioniert nicht, mein Modell ist immer Null. Ich lernte danach, wenn Sie das Attribut [FromBody] verwenden, wird der BodyModelBinder aufgerufen und ruft intern JsonInputFormatter auf und verwendet nicht den benutzerdefinierten ModelBinder.
Ich bin auf der Suche nach einer Möglichkeit, mein Schnittstellenmodell zu binden. Ich kann die MVC DI verwenden, um jede Schnittstelle mit ihrer Implementierung abzubilden. Meine Aktion-Methode ist wie folgt definiert:
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);
}
ich eine andere Lösung versucht, durch das MetadataType Attribut in meiner Schnittstelle verwenden, aber es existiert nicht in den Namespace System.ComponentModel.DataAnnotations und ich las, dass asp.net Kern mvc doesn verwende dieses Attribut nicht Asp.Net MVC MetaDataType Attribute not working. Ich möchte das Paket microsoft.aspnetcore.mvc.dataannotations im Domänenmodellprojekt nicht installieren, um das ModelDataType-Attribut zu verwenden.
Ich versuchte eine andere Lösung, indem ich einen benutzerdefinierten JsonInputFormater mit anderen Worten ich leitete die Klasse JsonInputFormatter und durch die Analyse des Quellcodes habe ich festgestellt, dass der JsonSerializer konnte eine Schnittstelle deserialize nicht, die logisch ist. Also suche ich nach einer Lösung, bei der ich den jsonserializer vielleicht mithilfe eines Resolvers oder eines generischen Konverters anpassen könnte.
Jede Hilfe wird sehr geschätzt.
Danke.
Unterbrochene Verbindung. Aus diesem Grund veröffentlichen wir keine Link-Only-Antworten. – brainbolt