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

标签 c# http-post asp.net-web-api

我有一个如下所示的网络 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"}
]

关于c# - Web Api - 具有复杂类型的 IEnumerable,因为参数为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33882345/

相关文章:

asp.net-web-api - 请求的资源不支持 http 方法 "PUT"

c# - 如何使用 C# 和 XML 获取根元素的直接子元素?

objective-c - 使用 NSUrlRequest 上传文件导致零字节文件大小

asp.net - 如何传递日期时间参数?

javascript - node.js - KOA 服务器 - 转发增强的 POST 请求

javascript - 后续的 POST 不会更新弹出窗口中的内容

c# - 共享资源锁

c# - 如何从 WebMatrix 查询中获取列?

c# - 在默认构造函数或内联中​​初始化变量之间有区别吗?

c# - DataGridView 中的列顺序在运行时更改