这份 .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; }
}
速查表总结
- API 接口 :
[ApiController]+[Route]+[HttpGet/Post] - 参数验证:DTO + 验证特性
- 数据库 :
[Table]/[Key]/[NotMapped] - 权限 :
[Authorize]/[AllowAnonymous] - 前后端交互 :
[FromBody]/[JsonIgnore]