Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向web API发送IEnumurable请求?_C#_Asp.net Web Api - Fatal编程技术网

C# 如何向web API发送IEnumurable请求?

C# 如何向web API发送IEnumurable请求?,c#,asp.net-web-api,C#,Asp.net Web Api,我试图在WeB API中接收请求,请求类类型为IEnumurable。我正在使用postman测试它,但它总是以空值的形式出现。下面是我的代码: 当我从请求类中删除IEnumurable时,我可以从POSTMAN获得值 控制器代码: [HttpPost] [Route("PostTotalLossData")] public IHttpActionResult PostTotalLossData([FromBody]TotalLossReviewedStatusRequest

我试图在WeB API中接收请求,请求类类型为IEnumurable。我正在使用postman测试它,但它总是以空值的形式出现。下面是我的代码: 当我从请求类中删除IEnumurable时,我可以从POSTMAN获得值

控制器代码:

[HttpPost]
[Route("PostTotalLossData")]
public IHttpActionResult PostTotalLossData([FromBody]TotalLossReviewedStatusRequest reviewedStatusReq)
{
    try
    {
        if (reviewedStatusReq != null)
        {
            var result = _iTLTT_BAL.UpdateTotalLossReviewedStatus(reviewedStatusReq);
            //return Ok(result);
            return Ok(reviewedStatusReq);
        }
        else
        {
            Log.Info("Invalid request received, Request : " + reviewedStatusReq);
            return Ok("Invalid request");
        }
    }
    catch (Exception ex)
    {
        Log.Error(ex.Message);
        throw ex;
    }           
}
请求类:

namespace CTS.NextGen.API.TLTT.Models.Request
{
    [Serializable]
    public class TotalLossReviewedStatusRequest : IEnumerable<TotalLossReviewedStatus>
    {
        public List<TotalLossReviewedStatus> totalLossReviewedStatuses { get; set; }

        public IEnumerator<TotalLossReviewedStatus> GetEnumerator()
        {
            return this.totalLossReviewedStatuses.GetEnumerator();
            
        }

        IEnumerator IEnumerable.GetEnumerator()
        {
            return this.totalLossReviewedStatuses.GetEnumerator();
            
        }
    }
}

请帮我解决这个问题。

您的请求正文应该是
数组
类型,而不是
对象
类型。将输入请求正文更改为

[    
   {
    "totalLossReviewedStatuses" : [
        {
      "n_claimNumber" : "123456678",
       "n_damageID" : "123rtyui89",
       "b_initiialReviewed" : "12/09/2020",
       "b_reviewed" :"Y",
       "heloo":"N"
        },
        {
      "n_claimNumber" : "123456678",
       "n_damageID" : "123rtyui89",
       "b_initiialReviewed" : "12/09/2020",
       "b_reviewed" :"Y"
        }
     ]
        
    }
    {
       ..........Other objects. If not needed then remove this object declaration
    }
]

不要实现IEnumerable,只需将您的请求声明为一个已实现enumerable并将接受JSON数组的
列表即可。如果您需要
IEnumerable
,那么您的帖子正文应该是
array
类型而不是`object'。请求采用哪种类型的IEnumerable?您只需传递一个列表或T[]或实现IEnumerable的任何其他集合。不确定,但我认为您可能有问题,因为您的
TotalossRevievedStatusRequest
继承自
IEnumerable
,但发送的值既不是数组,也不是类似数组的。正如上面其他人所说,让它从
IEnumerable
继承是毫无意义的。只需删除继承并在其中使用
IEnumerable
[    
   {
    "totalLossReviewedStatuses" : [
        {
      "n_claimNumber" : "123456678",
       "n_damageID" : "123rtyui89",
       "b_initiialReviewed" : "12/09/2020",
       "b_reviewed" :"Y",
       "heloo":"N"
        },
        {
      "n_claimNumber" : "123456678",
       "n_damageID" : "123rtyui89",
       "b_initiialReviewed" : "12/09/2020",
       "b_reviewed" :"Y"
        }
     ]
        
    }
    {
       ..........Other objects. If not needed then remove this object declaration
    }
]