Skip to main content
 首页 » 编程设计

c#之Web Api之具有复杂类型的 IEnumerable,因为参数为空

2024年05月22日46tuyile006

我有一个如下所示的网络 API 方法:

    [HttpPost] 
    [Route("message")] 
    public IHttpActionResult Post(IEnumerable<Email> email)         
    { 
        return Ok("message sent"); 
    }    

使用 Fiddler,我正在发送一个如下所示的请求:

User-Agent: Fiddler 
Host: localhost:3994 
Content-Length: 205 
Content-Type: application/json; charset=utf-8 
{ 
"To": "someone@emailaddress.com", 
"From": "Tom", 
"Body": "Cruise", 
"Template":"template" 
} 

我的电子邮件类如下所示:

    public class Email 
{ 
    public string Body { get; set; } 
    public string From { get; set; } 
    public string To { get; set; } 
    public string Template { get; set; } 

它正在访问我的 API 方法,但它返回 null。我一直在谷歌搜索并尝试 json 请求的所有不同变体,例如:

{ 
    "email":  
        { 
            "To": "someone@emailaddress", 
            "From": "Tom", 
            "Body": "Cruise", 
            "Template": "template" 
        }         
 } 

和许多其他方式,但每次电子邮件参数都为空。我究竟做错了什么?

请您参考如下方法:

如果你只想发送到一个邮件,你的主机方法参数和 json 数据是错误的

发布方法

[HttpPost] 
[Route("message")] 
public IHttpActionResult Post(Email email)         
{ 
    return Ok("message sent"); 
}  

Json 数据

{ 
"Body":"body", 
"From":"from", 
"To":"to", 
"Template":"template" 
} 

或者如果你只想发送更多邮件,你的 json 数据是错误的

用于更多电子邮件的 Json 数据

[ 
    {"Body":"body","From":"from","To":"to","Template":"template"}, 
    {"Body":"body1","From":"from1","To":"to1","Template":"template1"}, 
    {"Body":"body2","From":"from2","To":"to2","Template":"template2"} 
]