.NET Core 完整特性速查表(终极版)

这份 .NET Core 完整官方特性速查表(终极版) 是你开发时随时能查、直接能用 的手册,我按功能分类 整理齐全,包含API、验证、EF Core、权限、MVC、序列化、诊断等所有高频特性,无废话、全是干货。

.NET Core 完整特性速查表(终极版)

一、Web API / 路由 特性(控制器/接口必备)

命名空间:Microsoft.AspNetCore.Mvc

特性 作用 示例
[ApiController] 标记API控制器,自动模型验证、自动400 贴在控制器类上
[Route] 定义路由模板 [Route("api/[controller]")]
[HttpGet] 声明GET请求 [HttpGet("{id}")]
[HttpPost] 声明POST请求 新增接口
[HttpPut] 声明PUT请求 修改接口
[HttpDelete] 声明DELETE请求 删除接口
[HttpPatch] 局部更新 部分字段修改
[NonAction] 方法不暴露为接口 控制器内部私有方法
[ActionName] 自定义方法名 [ActionName("GetInfo")]
[FromBody] 从请求体获取参数 POST复杂对象
[FromQuery] 从URL查询字符串取参 GET?name=xx
[FromRoute] 从路由取参 api/user/{id}
[FromForm] 从表单取参 文件上传
[FromHeader] 从请求头取参 Token
[FromServices] 方法注入服务 无需构造函数
[RequestSizeLimit] 请求大小限制 [RequestSizeLimit(1024*1024)]
[DisableRequestSizeLimit] 取消大小限制 大文件上传
[ProducesResponseType] 定义返回状态码 Swagger生成文档
[ApiExplorerSettings(IgnoreApi=true)] 隐藏接口 不进Swagger

二、数据验证特性(DTO/Model 必备)

命名空间:System.ComponentModel.DataAnnotations

特性 作用
[Required] 必填项
[StringLength(max,min)] 字符串长度范围
[MaxLength] / [MinLength] 最大/最小长度
[Range(min,max)] 数值范围
[EmailAddress] 邮箱格式
[Phone] 手机号/电话格式
[Url] URL格式验证
[Compare(otherProperty)] 比较两个字段(确认密码)
[RegularExpression] 正则验证
[CreditCard] 银行卡格式
[DataType] 数据类型标记(Password/Date)
[Display(Name="名称")] 字段显示名
[ValidatableObject] 复杂对象递归验证

三、EF Core 实体映射特性(数据库)

命名空间:System.ComponentModel.DataAnnotations / Microsoft.EntityFrameworkCore

特性 作用
[Table("TableName")] 指定数据库表名
[Key] 主键
[Column("ColumnName")] 指定列名/类型
[DatabaseGenerated] 自增/计算列
[Required] 字段非空
[ForeignKey("Id")] 外键
[NotMapped] 不映射到数据库
[Index] 创建数据库索引
[Timestamp] 时间戳/并发令牌
[ConcurrencyCheck] 并发检查

四、权限 / 安全 特性

命名空间:Microsoft.AspNetCore.Authorization

特性 作用
[Authorize] 需要登录验证
[AllowAnonymous] 允许匿名访问
[Authorize(Roles="Admin")] 角色权限
[Authorize(Policy="PolicyName")] 策略权限
[AntiForgeryToken] 防CSRF攻击

五、JSON 序列化特性

命名空间:System.Text.Json / Newtonsoft.Json

特性 作用
[JsonPropertyName("name")] 指定JSON字段名
[JsonIgnore] 忽略字段不序列化
[JsonRequired] JSON必须包含该字段
[JsonConverter] 自定义序列化

六、依赖注入 特性(.NET 7+)

命名空间:Microsoft.Extensions.DependencyInjection

特性 生命周期
[Singleton] 单例
[Scoped] 作用域(推荐)
[Transient] 瞬态

七、跨域 / 缓存 / 配置

特性 作用
[EnableCors] 启用跨域
[DisableCors] 禁用跨域
[ResponseCache] 响应缓存
[OutputCache] 输出缓存(.NET 7+)

八、诊断 / 日志 / 异常

特性 作用
[Obsolete] 标记方法过期
[Conditional] 条件编译
[StackTraceHidden] 隐藏堆栈信息

九、自定义特性基类

所有自定义特性都继承它:

csharp 复制代码
public class 自定义特性 : Attribute
{

}

最常用组合模板(直接复制)

1. DTO 验证模板

csharp 复制代码
public class UserCreateDto
{
    [Required(ErrorMessage = "用户名不能为空")]
    [StringLength(20, MinimumLength = 2)]
    public string UserName { get; set; }

    [Required]
    [MinLength(6)]
    public string Password { get; set; }

    [EmailAddress]
    public string Email { get; set; }
}

2. 控制器模板

csharp 复制代码
[ApiController]
[Route("api/[controller]")]
public class UserController : ControllerBase
{
    [HttpGet("{id}")]
    [AllowAnonymous]
    public async Task<IActionResult> Get(int id) => Ok();

    [HttpPost]
    [Authorize]
    public async Task<IActionResult> Create([FromBody] UserCreateDto dto) => Ok();
}

3. 实体映射模板

csharp 复制代码
[Table("SystemUsers")]
public class User
{
    [Key]
    public int Id { get; set; }

    [Required]
    [MaxLength(50)]
    public string UserName { get; set; }

    [NotMapped]
    public string Token { get; set; }
}

速查表总结

  1. API 接口[ApiController] + [Route] + [HttpGet/Post]
  2. 参数验证:DTO + 验证特性
  3. 数据库[Table]/[Key]/[NotMapped]
  4. 权限[Authorize]/[AllowAnonymous]
  5. 前后端交互[FromBody]/[JsonIgnore]
相关推荐
无风听海1 小时前
ASP.NET Core CORS 深度解析:从 AddCors 到 CSRF 防御
后端·asp.net·csrf
XovH1 小时前
第28篇 k8s之Service:为 Pod 提供稳定的访问入口
后端
用户2181697049301 小时前
Gin (三) 中间件 并发测试
后端
fliter1 小时前
你想在 Rust 中实现动态库热重载?
后端
用户467245132231 小时前
分布式唯一序列号:万亿级订单不重复的奥秘
后端
未秃头的程序猿1 小时前
别再让大模型单打独斗了!Java 多 Agent 协作实战:任务拆解+结果聚合
java·后端·ai编程
XovH1 小时前
第29篇 k8s之Service 与 Endpoints 深入:服务发现原理
后端
人道领域1 小时前
【LeetCode刷题日记】538.把二叉搜索树转换为累加树
java·开发语言·后端·算法·leetcode
西凉的悲伤2 小时前
Spring Boot + ShardingSphere 介绍
java·spring boot·后端·shardingsphere·分库分表