在.Net核心Web API中,可以通过以下方式从接口方法返回验证消息:
[HttpPost]
public IActionResult Create([FromBody] MyModel model)
{
if (!ModelState.IsValid)
{
foreach (var error in ModelState.Values.SelectMany(v => v.Errors))
{
ModelState.AddModelError("", error.ErrorMessage);
}
return BadRequest(ModelState);
}
// 其他逻辑处理
return Ok();
}
public class ValidateModelAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext context)
{
if (!context.ModelState.IsValid)
{
foreach (var error in context.ModelState.Values.SelectMany(v => v.Errors))
{
context.ModelState.AddModelError("", error.ErrorMessage);
}
context.Result = new BadRequestObjectResult(context.ModelState);
}
}
}
然后,在需要验证的接口方法上添加[ValidateModel]特性即可:
[HttpPost]
[ValidateModel]
public IActionResult Create([FromBody] MyModel model)
{
// 其他逻辑处理
return Ok();
}
public class MyModel : IValidatableObject
{
public string Name { get; set; }
public int Age { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (string.IsNullOrEmpty(Name))
{
yield return new ValidationResult("Name is required.", new[] { nameof(Name) });
}
if (Age < 18)
{
yield return new ValidationResult("Age must be at least 18.", new[] { nameof(Age) });
}
}
}
然后,在接口方法中使用ModelState.IsValid属性来判断验证结果:
[HttpPost]
public IActionResult Create([FromBody] MyModel model)
{
if (!ModelState.IsValid)
{
foreach (var error in ModelState.Values.SelectMany(v => v.Errors))
{
ModelState.AddModelError("", error.ErrorMessage);
}
return BadRequest(ModelState);
}
// 其他逻辑处理
return Ok();
}
以上是从接口方法返回验证消息的几种常见方式。根据具体的业务需求和开发习惯,可以选择适合的方式来处理验证消息。对于.Net核心Web API的开发,可以使用腾讯云的云服务器CVM来部署和运行应用,使用云数据库MySQL来存储数据,使用云存储COS来存储文件等。具体产品介绍和链接地址可以参考腾讯云官方文档。
云+社区技术沙龙[第22期]
云+社区开发者大会 长沙站
云+社区技术沙龙[第1期]
云+社区技术沙龙[第4期]
云+社区技术沙龙[第14期]
云+社区技术沙龙[第8期]
技术创作101训练营
Elastic 中国开发者大会
云+社区开发者大会(杭州站)
云+社区技术沙龙[第28期]
DB TALK 技术分享会
领取专属 10元无门槛券
手把手带您无忧上云