.net5 core webapi项目实战之十一:F6用户更新自己的信息及[FromForm]使用

本篇实现F6功能(见红色部分)

功能序号 HTTP谓词(HTTP verbs) API 描述
F1 GET /api/users 管理员获取用户列表
F2 POST /api/users 管理员添加用户
F3 PATCH /api/users/{id}/role 管理员修改用户角色
F4 PATCH /api/users/{id}/state 管理员锁定/解锁用户
F5 GET /api/users/{id} 用户获取自己的信息
F6 PUT /api/users/{id} 用户更新自己的信息
F7 PATCH /api/users/{id}/password 用户修改密码
       

 

代码如下:

复制代码
 1         [HttpPut]
 2         [Route("{id}")]
 3         public ContentResult ModifyUser(int id)
 4         {
 5             User user = new User()
 6             {
 7                 UserId = id,
 8                 Nickname = Request.Form["Nickname"],
 9                 Email = Request.Form["Email"],
10                 
11 Mobile = Request.Form["Mobile"], 12 Age = Convert.ToInt32(Request.Form["Age"]) 13 }; 14 _userDao.UpdateUser(user); 15 16 return Content("{'result':'success'}"); 17 }
复制代码

1. 使用HttpPut来处理请求的时候,除了在客户端(浏览器或其他应用程序)设置Method=PUT外,

还要在HTTP Header中设置Content-Type=application/x-www-form-urlencoded,

否则用Request.Form[ ]来接收参数值的时候是会出错的。

 

2 . 如果Model对象的属性比较多,还可以利用[FromForm]属性获取参数值,

前提是传递过来的参数名称和Model对象的属性名称相同,代码如下:

1         [HttpPut]
2         [Route("{id}")]
3         public ContentResult ModifyUser(int id,[FromForm] User user)
4         { 
5             _userDao.UpdateUser(user);
6 
7             return Content("{'result':'success'}");
8         }

客户端传递过来的参数名必须是Nickname,Email,Mobile,Age等和user.cs中属性名相同的名称(大小写不限),

否则用[FromForm] 修饰的User user对象是获取不到值的。

 

posted @   屏风马  阅读(1099)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示