代码之家  ›  专栏  ›  技术社区  ›  Illep

验证数据模型

  •  1
  • Illep  · 技术社区  · 6 年前

    我已经创建了一个webAPI和 datamodel 如下所示:

    {
     "name" : "",
      "age" : ""
    }
    

    因为这是我创建的第三方API,所以会有很多其他开发人员试图访问它。他们常犯的一个错误是,有时会忘记 数据模型 . 例如,他们可能忘记为 age 完全。

    所以他们只会 name 而不是 年龄 如下所示。

    {
         "name" : ""
    }
    

    如何从控制器进行验证检查,以查看开发人员是否忘记输入属性 年龄 在JSON中?

    我试着检查空值,但没用。

    public async Task<IActionResult> SaveStudent([FromBody] Student stu)
    {
        if(stu.age == null) { DISPLAY ERROR } // This doesn't work
    ...
    }
    
    3 回复  |  直到 6 年前
        1
  •  3
  •   mahlatse    6 年前

    与大多数microsoft web框架一样,您可以使用 DataAnnotatons ,查看MSDN网站,可以找到如何使用 DataAnnotations with Json Post ,使用属性可以为传入模型指定范围、必需等,

        2
  •  2
  •   ilkerkaran    6 年前

    你在找模型验证 像这样的东西;

    public async Task<IActionResult> SaveStudent([FromBody] Student stu)
    {
    if (!context.ModelState.IsValid)
                {
                    context.Result = new BadRequestObjectResult(context.ModelState);
                }
    ...
    }
    
        3
  •  1
  •   TanvirArjel    6 年前

    您的模型类应如下所示:

    public class Student 
    {
       [Required]
       public string Name {get; set;}
    
       [Required]
       public int Age {get; set;}
    }
    

    然后在控制器中:

    public class StudentController : Controller 
    {
         public async Task<IActionResult> SaveStudent([FromBody] Student student)
        {
            if (ModelState.IsValid)
            {
                  _dbContext.Students.Add(student);
                  await _dbContext.SaveChangesAsync();
                  return Json(true)
            }
    
           return Json(false);
        }
    }
    

    现在,您可以根据 SaveStudent() 方法返回输出。