如何使用提取将JavaScript中的FormData发送到ASP.NET Core 2.1 Web API - javascript

我正在尝试创建一个表单,该表单将FormData对象发送到API控制器,该控制器将数据序列化为Article类,但是我无法使其正常工作。我已经尝试过评论的内容。

这是我的HTML:

<form onsubmit="postArticle()">
<input type="type" name="Title" value="" />
<input type="type" name="Content" value="" />
<input type="submit" value="Submit" />
</form>

这是我的JS:

<script>

var postArticle = () => {
    event.preventDefault();
    var Article = new FormData(this.event.target);
    console.log([...Article]);
    fetch('/api/Articles', {
        headers: {
            'Content-Type': 'multipart/formdata',
            //'Content-Type': 'application/json'
        },
        method: "POST",
        body: Article
        //body: JSON.stringify(Article)
    })
}
</script>

控制器:

    // POST: api/Articles
    [HttpPost]
    public async Task<IActionResult> PostArticle(Article article)
    {
        string name = article.Title;
        if (!ModelState.IsValid)
        {
            return Ok();
        }

        _context.Article.Add(article);
        await _context.SaveChangesAsync();

        return Ok();
    }

和我的Article类:

public class Article
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
}

参考方案

现在工作!解决方案是在添加[FromForm]的同时不要设置任何内容类型的标题,谢谢大家的贡献。

解决方案的一部分位于this thread

这些是更改:
    

var postArticle = () => {
    event.preventDefault();
    var Article = new FormData(this.event.target);
    console.log([...Article]);
    fetch('/api/Articles', {
        method: "POST",
        body: Article
    })
}
// POST: api/Articles
    [HttpPost]
    public async Task<IActionResult> PostArticle([FromForm]Article article)
    {
        string name = article.Title;
        if (!ModelState.IsValid)
        {
            return Ok();
        }

        //_context.Article.Add(article);
        //await _context.SaveChangesAsync();

        return Ok(); //CreatedAtAction("GetArticle", new { id = article.Id }, article);
    }

无法将路线映射为行动,ASP.NET Core Web API - c#

我正在研究Web API项目,并且遇到以下问题:我尝试使用以下网址(https://localhost:44328/api/Users/GetUserBy?username=myusername&password=mypassword)调用名为“ GetUserBy”的操作方法,但在浏览器中收到的结果如下所示:{"id":[�…

Json参数转换继承Web API 2 - javascript

我正在使用MS Web API 2使用ajax从我们的网页接收呼叫。然后,我有2个类:Subscriber和externalSubscriber。订户包含非常基本的数据,例如名称和ID。外部订户继承自订户并添加基本数据,例如地址和电子邮件。我有一个api方法来编辑这样定义的订户的数据:public IHttpActionResult PutSubscribe…

AJAX调用可从ASP.NET Core Web API动态构建DataTable - javascript

当用户单击另一个表的行时,我试图填充一个表。我在第一个表的onClick标记中有一个<tr>事件,该事件触发一个函数将三个属性发送到我的webapi。我有一个命名处理程序,它使用三个属性并将它们用作另一种方法的输入值,以从Azure表中检索数据。响应是预格式化的JSON数据,我将其提供给JavaScript代码。我在渲染视图中看到的是一长串JSO…

调用SignalR Hub不适用于Asp.Net Core Web API - c#

我是SignalR的新手。我正在尝试设置一个Asp.Net Core WebAPI,以便其他客户端可以使用SignalR连接到它并获取实时数据。我的Hub类是:public class TimeHub : Hub { public async Task UpdateTime(string message) { await Clients.All.SendAs…

ASP.NET Web API 2中AuthorizeAttribute发生了什么变化? - c#

我已经将项目和一组单元测试从ASP.NET Web API升级到ASP.NET Web API 2。我们将自定义DelegatingHandler用于自定义身份验证机制。它将Thread.CurrentPrincipal和HttpContext.Current.User设置为适当的System.Security.Claims.ClaimsPrincipal。…