【发布时间】:2019-04-01 14:44:17
【问题描述】:
我正在尝试创建一个表单,将 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();
}
还有我的文章类:
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
public string Content { get; set; }
}
【问题讨论】:
-
会发生什么?您的 F12 浏览器开发工具是否在控制台或网络选项卡中显示任何内容?你的控制器会被击中吗?更多输入......
-
是的,抱歉我忘了说,请求返回400,响应是:{"":["输入无效。"]}
-
两件事:您没有发布 Id 字段,这是必需的;你可以尝试使用
PostArticle([FromForm] Article article) -
我认为这里的答案可能会有所帮助:stackoverflow.com/questions/46640024/…
-
@CamiloTerevinto 好的,我添加了 [FromForm] 并创建了根本没有 Id 的新模型,现在请求返回 200(ok)但实际上没有表单数据进入文章模型(标题=空,内容=空)
标签: javascript c# asp.net-core fetch