我已经创建了一个webAPI,该datamodel如下所示:
{
"name" : "",
"age" : ""
}由于这是我创建的第三方API,将会有许多其他开发人员尝试访问它。他们经常犯的一个错误是他们有时会忘记datamodel中的一些字段。例如,他们可能根本忘记输入age的值。
所以他们只会发送name,而不会发送age,如下所示。
{
"name" : ""
}如何从我的控制器执行验证检查,以查看开发人员是否忘记在JSON中输入属性age?
我试着检查null,但它不起作用。
public async Task<IActionResult> SaveStudent([FromBody] Student stu)
{
if(stu.age == null) { DISPLAY ERROR } // This doesn't work
...
}发布于 2018-08-01 03:59:53
与大多数微软web框架一样,您可以使用DataAnnotatons,查看MSDN网站,您可以找到如何使用DataAnnotations with Json Post的示例,使用您可以为传入模型指定范围、必需等的属性。
发布于 2018-08-01 04:01:02
你正在寻找模型验证,就像这样;
public async Task<IActionResult> SaveStudent([FromBody] Student stu)
{
if (!context.ModelState.IsValid)
{
context.Result = new BadRequestObjectResult(context.ModelState);
}
...
}发布于 2018-08-01 04:09:23
您的模型类应该如下所示:
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()方法返回的输出在客户端显示自定义的错误或成功消息。
https://stackoverflow.com/questions/51621039
复制相似问题