Ich habe die folgende Controller-Methode, die den Befehl als Änderungsmodell akzeptiert, das vom Client übergeben wird.So modellieren Sie das Bindepfadsegment zur Objekteigenschaft
[HttpPut]
[Route("api/features/{name}")]
public async Task<IActionResult> PutFeatureValueAsync(
string name,
[FromBody] SetFeatureCommand command,
CancellationToken token)
{
command.FeatureName = name;
await mediator.Send(command, token).ConfigureAwait(false);
return Ok();
}
Das Problem ist, dass ich eine Feature Eigenschaft auf den Befehl Objekt kopieren manuell, wenn ich den Namen {} in der URL halten will. Das andere Problem besteht darin, dass ich eine Überprüfung nicht ordnungsgemäß durchführen kann, wenn der FeatureName nicht während der Modellbindung festgelegt wird.
Was wäre der beste Weg, {Name} Segment des Pfads automatisch Modell Bindung an FeatureName Eigenschaft des Befehls zu haben.
Das Problem bei diesen Ansätzen ist, dass ich die ganze Sache neu implementieren müssten, die bereits im BodyProvider ist, nicht wahr? Nehmen wir an, der Befehl hat 5 Eigenschaften. 4 von ihnen möchte ich weiterhin von [FromBody] oder was auch immer markiert ist gebunden werden. Lassen Sie jedoch eine Eigenschaft mithilfe einer benutzerdefinierten Zuordnung von einer anderen Bindungsquelle (Pfad) binden. Ich denke eher an die benutzerdefinierte IValueProviderFactory, die Routenwerte unter neu zugeordneten Namen bereitstellt, so dass die Standardmodell-Ordner sie einfach abholen –