ASP.NET Web API中的数据注解验证技术

ASP.NETMVC应用程序中,模型(Model)扮演着数据结构的表示角色。本文将探讨如何在ASP.NETWeb API应用程序中对模型类应用数据注解技术进行验证。

在之前的ASP.NETWeb API系列文章中,已经创建了一个执行所有CRUD(创建、检索、更新、删除)操作的应用程序。接下来,将使用相同的域模型类“Student.cs”,并使用数据注解方法对其进行验证。为了更好地理解并应用更多的验证规则,对其进行了一些修改。以下是模型类:

public class Student { [Range(1, 500)] public int StudentID { get; set; } [Required] [MaxLength(10)] public string FirstName { get; set; } public string LastName { get; set; } }

在模型类属性上应用了一些验证,就像数据库表字段有关联的验证规则一样。使用System.ComponentModel.DataAnnotations命名空间中的属性来对模型属性进行注解。模型类“Student”有以下验证规则:

  • StudentID的值必须在1到500之间。
  • FirstName是必填项,最大长度为10。
  • LastName没有关联的规则。

将在控制器类“StudentController”中检查模型的有效性是否符合定义的验证规则。以下是控制器类的代码示例:

public class StudentsController : ApiController { public HttpResponseMessage Post(Student student) { if (ModelState.IsValid) { // 有效场景代码... return new HttpResponseMessage(HttpStatusCode.OK); } else { return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState); } } }

当客户端发送POST请求(JSON格式)时,它将被转换为Student对象实例,然后该实例将根据模型类中定义的规则进行验证。在上述代码示例中,第5行,Student实例的状态被验证,并相应地生成响应。假设依次向ASP.NETWeb API服务发布以下JSON:

{ "StudentID": 942, "FirstName": "Imran", "LastName": "Ghani" } { "StudentID": 100, "FirstName": "ImraaanAbdul", "LastName": "Ghani" } { "StudentID": 101, "FirstName": "Imran", "LastName": "Ghani" }

JSON表示1和2将返回消息“Bad Request....Request is Invalid....”,因为:

  • StudentID的值不在定义的验证范围内(1到500)。
  • FirstName超出了定义的最大长度。

JSON表示3是有效的,将返回状态码200的响应。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485