c# – 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

前端之家收集整理的这篇文章主要介绍了c# – 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个看起来像的模型.
  1. public class StoreItemviewmodel
  2. {
  3. public Guid ItemId { get; set; }
  4. public List<Guid> StoreIds { get; set; }
  5. [required]
  6. public string Description { get; set; }
  7. //[required]
  8. //[DataMember(Isrequired = true)]
  9. public int ItemTypeId { get; set; }
  10.  
  11.  
  12. }

我有一个小帮手,使用的是使用RestSharp.

  1. public static IRestResponse Create<T>(object objectToUpdate,string apiEndPoint) where T : new()
  2. {
  3. var client = new RestClient(CreateBaseUrl(null))
  4. {
  5. Authenticator = new HttpBasicAuthenticator("user","Password1")
  6. };
  7.  
  8. var request = new RestRequest(apiEndPoint,Method.POST);
  9. //request.JsonSerializer = new JsonSerializer();
  10. // {RequestFormat = DataFormat.Json};
  11. request.AddObject(objectToUpdate);
  12. // clientJsonSerializer = new YourCustomSerializer();
  13. var response = client.Execute<T>(request);
  14. return response;
  15. }

调试控制器在我的api

  1. [HttpPost]
  2. public HttpResponseMessage Create([FromBody]StoreItemviewmodel myProduct)
  3. {
  4. //check fields are valid
  5. .........
  6. }

我的产品产品全部与公共List Store集成,它总是返回单一的奖励与空的Guid.即使我添加了两个或更多StoreIds

我假设这是因为我的应用程序中的“创建”帮助器发生错误.

任何人都可以帮助这个导致头痛的事情.

发送到webapi的原始数据看起来像

  1. 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

解决方法

我设法得到这个工作.我不认为它是正确的方式,但它的作品.
  1. public static IRestResponse Create<T>(object objectToUpdate,"Password1")
  2. };
  3. var json = JsonConvert.SerializeObject(objectToUpdate);
  4. var request = new RestRequest(apiEndPoint,Method.POST);
  5. request.AddParameter("text/json",json,ParameterType.RequestBody);
  6. var response = client.Execute<T>(request);
  7. return response;
  8. }

猜你在找的C#相关文章