Sérialiser un objet avec restsharp et le transmettre à WebApi ne pas sérialiser la liste
J'ai une vue modèle qui ressemble.
public class StoreItemViewModel
{
public Guid ItemId { get; set; }
public List<Guid> StoreIds { get; set; }
[Required]
public string Description { get; set; }
//[Required]
//[DataMember(IsRequired = true)]
public int ItemTypeId { get; set; }
}
J'ai un petit helper que l'aide est à l'aide de RestSharp.
public static IRestResponse Create<T>(object objectToUpdate, string apiEndPoint) where T : new()
{
var client = new RestClient(CreateBaseUrl(null))
{
Authenticator = new HttpBasicAuthenticator("user", "Password1")
};
var request = new RestRequest(apiEndPoint, Method.POST);
//request.JsonSerializer = new JsonSerializer();
//{RequestFormat = DataFormat.Json};
request.AddObject(objectToUpdate);
//clientJsonSerializer = new YourCustomSerializer();
var response = client.Execute<T>(request);
return response;
}
Lors du débogage de la télécommande dans mon api
[HttpPost]
public HttpResponseMessage Create([FromBody]StoreItemViewModel myProduct)
{
//check fields are valid
.........
}
myProducts produits sont tous alimentés en dehors de la Liste publique Storeid c'est toujours retourner une seule récompense avec un vide Guid. Même si j'ai ajouté 2 ou plus Storeid
Je suppose que c'est parce que je suis en train de faire quelque chose de mal avec mon Créer helper dans mon application.
N'importe qui peut aider avec ce son causant un mal de tête important.
Les données brutes envoyées à la webapi est à la recherche comme
ItemId=f6dbd244-e840-47e1-9d09-53cc64cd87e6&ItemTypeId=6&Description=blabla&StoreIds=d0f36ef4-28be-4d16-a2e8-37030004174a&StoreIds=f6dbd244-e840-47e1-9d09-53cc64cd87e6&StoreId=d0f36ef4-28be-4d16-a2e8-37030004174a
source d'informationauteur Diver Dan
Vous devez vous connecter pour publier un commentaire.
RestSharp a maintenant plus simple façon d'ajouter un objet à la RestRequest Corps avec la Sérialisation Json:
Cela a été trouvé dans RestSharp 105.0.1.0
J'ai réussi à le faire fonctionner. Je ne pense pas que sa le bon chemin, mais il fonctionne.
J'ai lutté avec le même problème et est venu une solution de travail.
Assurez-vous de définir le format de la requête JSON:
demande.RequestFormat = Format.Json;
Utilisation AddBody, plutôt que de AddObject:
demande.AddBody(zNewSessionUsage);
De sorte que votre code serait quelque chose comme ceci: