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

推荐订阅源

Y
Y Combinator Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
人人都是产品经理
人人都是产品经理
酷 壳 – CoolShell
酷 壳 – CoolShell
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
Check Point Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
Recent Announcements
Recent Announcements
The Cloudflare Blog
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
IT之家
IT之家
MyScale Blog
MyScale Blog
博客园_首页
Martin Fowler
Martin Fowler
WordPress大学
WordPress大学
罗磊的独立博客

博客园 - 云飞扬IT

在 ASP.NET Core 中使用 IHttpClientFactory 发出 HTTP 请求(官方文档) C# IConfiguration 注入 理解(AI) C# webapi 参数(AI) Error:(246, 5) error: resource android:attr/ttcIndex not found Android Gradle 插件版本与Gradle版本对应 flutter 水平Row示例 flutter Padding的用法 flutter解析json参考 java 三个类名 abstract extends implements flutter Vs code 快速创建2个状态的快捷代码 flutter分号还是逗号 flutter在线站点 windows 10 安装 sql 2005 安装失败 开发和常用工具推荐清单 ---转 ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码) ---转 【商业源码】生日大放送-Newlife商业源码分享 -转 我个人所有的独立博客wordpress都被挂马 .NET Web开发技术简单整理 转 程序员常用不常见很难得的地址大全转
asp.net mvc 传参问题
云飞扬IT · 2026-02-04 · via 博客园 - 云飞扬IT
 

代码示例:验证两种写法的差异
情况 1:直接用 int Id(无法获取 Body 中的 Id)
csharp
运行

// 前端POST JSON:{"Id": 123} → 这里Id无法绑定,值为0(int默认值)
[HttpPost("info")]
public IResult Info(int Id) 
{
    // Id = 0(未绑定到值)
    return Results.Ok($"Id: {Id}");
}

情况 2:显式指定从 Body 绑定 int Id(可以获取)
如果想直接用int Id并获取 Body 中的值,需要手动加[FromBody]特性(注意:一个 Action 只能有一个[FromBody]参数):
csharp
运行

// 前端POST JSON:{"Id": 123} → 能正常绑定Id=123
[HttpPost("info")]
public IResult Info([FromBody] int Id) 
{
    return Results.Ok($"Id: {Id}");
}

情况 3:用复杂类型(默认从 Body 绑定,推荐)
这是你现在使用的方式,也是行业最佳实践(尤其参数多的时候):
csharp
运行

// 前端POST JSON:{"Id": 123} → 能正常绑定
[HttpPost("info")]
public IResult Info(ApiBookInfoRequest request) 
{
    // request.Id = 123
    return Results.Ok($"Id: {request.Id}");
}

public class ApiBookInfoRequest
{
    public int Id { get; set; }
}

情况 4:Id 放在路由 / 查询字符串(简单类型也能获取)
如果Id是通过路由或查询字符串传递,直接用int Id也能正常获取:
csharp
运行

// 路由传递:POST /info/123 → Id=123
[HttpPost("info/{Id}")]
public IResult Info(int Id) 
{
    return Results.Ok($"Id: {Id}");
}

// 查询字符串传递:POST /info?Id=123 → Id=123
[HttpPost("info")]
public IResult Info(int Id) 
{
    return Results.Ok($"Id: {Id}");
}