在我的项目中,我有一个名为Project的模型类,我在我的REST服务中有一个POST方法,在Web API中开发,我希望收到一个Project列表,但总是我调用这个方法,IList参数为null。我要做什么来传递List作为参数?
那是我的控制者:
[IdentityBasicAuthentication]
[Authorize]
[RoutePrefix("project")]
public class ProjectController : ApiController
{
[HttpPost]
[Route("listafavoritos")]
public IList<PROSPERI_EpmFast.Core.Modelo.POCO.Project> ListaFavoritos([FromBody] List<PROSPERI_EpmFast.Core.Modelo.POCO.Project> projetos)
{
//execute the actions
}
}
那是我的服务电话:
public virtual async Task<IList<Project>> ListaProjetosFavoritos(IList<Project> projetosFavoritos)
{
var url = "http://myserviceurl/project/listafavoritos";
_client.DefaultRequestHeaders.Authorization = authentication;
foreach (Project projetoLimpar in projetosFavoritos)
{
projetoLimpar.Tasks = null;
projetoLimpar.Team = null;
projetoLimpar.Cost = null;
projetoLimpar.Schedule = null;
}
var uri = new Uri(string.Format(url, string.Empty));
var json = JsonConvert.SerializeObject(projetosFavoritos, this._microsoftDateFormatSettings);
var contentEnvio = new StringContent(json, Encoding.UTF8, "application/json");
_client.Timeout = new TimeSpan(0, 5, 0);
var response = await _client.PostAsync(uri, contentEnvio);
if (response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<IList<Project>>(content, this._microsoftDateFormatSettings);
}
return null;
}
答案 0 :(得分:2)
将参数转换为数组
[HttpPost]
[Route("listafavoritos")]
public IList<Project> ListaFavoritos([FromBody]Project[] projetos) { ... }
并在发送数据时将数据转换为数组
//....
var payload = projetosFavoritos.ToArray();
var json = JsonConvert.SerializeObject(payload, this._microsoftDateFormatSettings);
var contentEnvio = new StringContent(json, Encoding.UTF8, "application/json");
_client.Timeout = new TimeSpan(0, 5, 0);
var response = await _client.PostAsync(uri, contentEnvio);
//....