J'essaie de créer un objet avec toutes les données pertinentes d'une requête liée.
Imaginez une action comme celle-ci
[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)
Et le modèle pourrait être comme ça
public class PostRequest
{
[FromRoute]
public int Id { get; set; }
[FromHeader]
public string SomeHeader { get; set; }
[FromBody]
public int Foo { get; set; }
[FromBody]
public string Bar { get; set; }
[FromBody]
public string Baz { get; set; }
}
Malheureusement, plusieurs [FromBody]
ne sont pas autorisés.
Si cela était autorisé et fonctionnait comme prévu, je pourrais implémenter un contrôleur CRUD générique comme celui-ci
[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)
{
var command = _mapper.Map<TCommand>(model); // AutoMapper
await _mediator.Send(command); // MediatR
// omitted for brevity
return Created();
}
De toute évidence, cela ne ressemblerait pas exactement à cela.
L'idée est de supprimer toute logique du contrôleur qui n'est pas liée à l'API/MVC. Donc tout ce que fait le contrôleur est
Maintenant, je peux avoir une implémentation pour tous mes besoins en contrôleur CRUD - et je me réjouis beaucoup !
Il n'a pas besoin d'être [FromBody]
cela pourrait être un autre attribut. Comme [FromBodyPart]
, [BindFromBody]
ou quelque chose de complètement différent.
Serait-ce faisable ?
Merci pour votre demande de fonctionnalité. Nous examinerons cette fonctionnalité au cours de la prochaine période de planification de la version et mettrons à jour l'état de ce problème en conséquence.
Je pense que ce serait une solution à ma question SO que j'ai toujours sans réponse ici:
https://stackoverflow.com/questions/44261111/how-to-model-bind-path-segment-to-object-property
Merci de nous avoir contacté.
Après avoir réévalué cette demande, nous avons décidé de ne pas fournir une telle fonctionnalité car elle n'est pas bien alignée avec les principes que nous essayons de suivre dans le cadre.
Commentaire le plus utile
Merci pour votre demande de fonctionnalité. Nous examinerons cette fonctionnalité au cours de la prochaine période de planification de la version et mettrons à jour l'état de ce problème en conséquence.