.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]
相关推荐
大型UFO15 分钟前
在 Hermes Agent 里搭建全中文 Honcho 记忆系统踩过的坑
后端
前端工作日常41 分钟前
我学习到的Java概念
java·后端
天天代码码天天1 小时前
工控机还是 Win7?我把 PP-OCRv6 做成了 14MB 纯 CPU DLL,.NET 3.5 也能直接调用
.net·win7·pp-ocrv6
找死的豆腐1 小时前
基于.NET的Windows窗体编程之WinForms图像控件
windows·.net
要阿尔卑斯吗1 小时前
深入解析 Docling Java SDK 集成:Source 与 Target 的实战应用
后端
范闲3 小时前
第三章: 从 ChatModel 到 Agent:Octo 项目的架构演进
后端
江华森3 小时前
深入理解 Flask 实现原理
后端·python·flask
Nturmoils3 小时前
LEFT JOIN 到底什么时候会被优化器偷偷改写成 INNER JOIN
后端
北冥you鱼4 小时前
Go Modules 使用指南:从入门到精通
开发语言·后端·golang