【发布时间】:2015-08-04 17:30:35
【问题描述】:
我有一个看起来像的视图模型。
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; }
}
我有一个使用 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;
}
在我的 api 中调试控制器时
[HttpPost]
public HttpResponseMessage Create([FromBody]StoreItemViewModel myProduct)
{
//check fields are valid
.........
}
myProducts 产品除了公共 List StoreIds 之外都被填充,它总是返回带有空 Guid 的单个奖励。即使我添加了 2 个或更多 StoreIds
我认为这是因为我在我的应用程序中使用我的 Create 助手做错了。
任何人都可以帮助解决这个问题。
发送到 webapi 的原始数据是这样的
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
【问题讨论】:
-
你能分享一下原始 json 请求的样子吗?
-
@KiranChalla 抱歉,我该如何使用 restsharp 位?
-
您可以使用 Fiddler,它是一个 httpproxy,来捕获请求/响应。
-
哈哈我不知道我可以使用 fiddler 来处理服务器端的东西。我一直认为这只是为了客户端的东西。感谢您的提示 :) 我刚刚用原始 json 更新了帖子
-
所以我已经看到当数据被序列化时 StoreIds 设置不正确。我尝试使用 json.net 库进行测试,它工作正常。如果我需要使用 json.net 库,我很乐意这样做,我只是不知道如何将 json.net 序列化对象传递给 api
标签: c# asp.net-mvc asp.net-web-api json.net restsharp