惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Recent Announcements
Recent Announcements
雷峰网
雷峰网
The GitHub Blog
The GitHub Blog
罗磊的独立博客
月光博客
月光博客
J
Java Code Geeks
A
About on SuperTechFans
Microsoft Security Blog
Microsoft Security Blog
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
U
Unit 42
C
Check Point Blog
Martin Fowler
Martin Fowler
有赞技术团队
有赞技术团队
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
大猫的无限游戏
大猫的无限游戏
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
阮一峰的网络日志
阮一峰的网络日志
MyScale Blog
MyScale Blog

博客园 - Shapley

项目心得 进程间通讯方式 C#使用MCP协议调用大模型示例 SQL Server LEAD函数实践 sql server行专列一例 数据库字段排序方法两则 Sql Server生成ULID例子 审批流进化记 winform+Task+async 献丑贴:Task.Run中foreach优化 Sql Server Begin TRY sample No service for type 'Microsoft.AspNetCore.Mvc.ViewFeatures.Filters.ValidateAntiforgeryTokenAuthorizationFilter' has been registered. 某低代码平台自定义控件技术点 Element-plus的el-date-picker控件动态切换中英文方案 Chrome浏览器无法查看页面跳转前的请求日志及解决办法 element-plus上传视频并生成缩略图(封面)方案 JWT自动刷新草案 H5项目在微信浏览器运行实录 Sql Server变量声明及使用技巧 修改Dify的Nginx对外访问端口 Task with Console(with SemaphoreSlim) Task实战 asp.net core 9.0发布centos7.9 Barrier CountdownEvent
Ajax方法POST的两种提交方式
Shapley · 2025-07-02 · via 博客园 - Shapley

所需的公共类:

 public class SysUser
 {
     [Key]
     public int Id { get; set; } 
     public string Name { get; set; }
     public DateTimeOffset? CreateTime { get; set; }
 }

方式一:采用Json

前端代码:

 $.ajax({
   type: "POST",
   url:  "/home/SaveUser",
   data: JSON.stringify({name: $("#newUser").val() }),
   contentType: "application/json;charset=utf-8;",
   error: function (request) {
   },
   success: function (res) {
       alert(res);
   }
 });

后端代码(asp.net core 8.0),controller

 public IActionResult SaveUser([FromBody] SysUser user)
 {

 }

方法二:提交时用application/x-www-form-urlencoded

前端:

 $.ajax({
   type: "POST",
   url:  "/home/SaveUser",
   data: {name: $("#newUser").val() },
   error: function (request) {
   },
   success: function (res) {
       alert(res);
   }
 });

后端:

public IActionResult SaveUser(SysUser user)
{

}

说明(以下来自DeepSeek):

JSON 数据存储在请求体(Body)中,必须显式指定从 Body 绑定。如果请求的 Content-Type 不是 application/x-www-form-urlencoded 或 multipart/form-data,通常需要 [FromBody]

何时必须加 [FromBody]

场景是否需要 [FromBody]示例
JSON 请求体 ✅ 必须 [FromBody] UserDto user
表单数据(x-www-form-urlencoded) ❌ 不需要 UserDto user
文件上传(multipart/form-data) ❌ 不需要 IFormFile file
简单类型(int/string) ❌ 通常不需要(默认从 Query 绑定) int id
[ApiController] 下的复杂类型 ❌ 可省略(自动推断) UserDto user

关键原则:

  • 加 [FromBody]:当数据来自请求体(如 JSON、XML)。

  • 不加 [FromBody]:当数据来自表单、查询字符串或路由。