2017-10-03 1 views
1

J'ai un besoin de fournir un modèle qui contient tous les paramètres que je souhaite liés dans une requête POST. Cependant, certains de ces paramètres proviennent de l'itinéraire et d'autres du corps sous la forme d'une chaîne sérialisée JSON.Modélisation à partir de paramètres de corps et de route web api

Y a-t-il un moyen dans le WebApi de gérer cela afin que je puisse simplement avoir l'objet unique sans avoir besoin de spécifier des paramètres primatifs supplémentaires.

donc au lieu de cela.

public async Task<IActionResult> Post(int agencyId, string stockTypeKey, int stockClassId, [FromBody] ListingPostRequest request) 

Je cherche ce

public async Task<IActionResult> Post([FromBody]ListingPostRequest request) 

public class ListingPostRequest : IRequest<ListingPostResponse>, IAgencyRequest 
{ 
    public int AgencyId { get; set; } 

    public string StockTypeKey { get; set; } 

    public int StockClassId { get; set; } 

    public ListingPostRequestApi Model { get; set; } 
} 
+0

Il ressemble à ce que vous cherchez est des valeurs d'itinéraire ambiantes, ou cachées des valeurs postback comme solution de repli. Avez-vous essayé non plus? – Khyron

+0

Non, je ne suis pas sûr de savoir ce que vous voulez dire désolé – dreza

+0

Ok, les propriétés agencyId, stockTypeKey et stockClassId de ListingPostRequest'? – Khyron

Répondre

0

Si je comprends bien, [FromBody] et [FromUri] sont essentiellement des instructions pour la DefaultModelBinder. C'est une proposition de type un ou l'autre par paramètre et ce que vous essayez de faire est de le faire choisir dynamiquement pour différentes propriétés d'un paramètre d'objet complexe. Peut-être que cela pourrait être fait en écrivant un classeur de modèle personnalisé, mais c'est probablement un peu plus complexe que ce que vous recherchiez.

Pour plus d'informations au sujet de modèle de liaison et l'attribut [FromBody]: https://docs.microsoft.com/en-us/aspnet/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api