首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >验证数据模型

验证数据模型
EN

Stack Overflow用户
提问于 2018-08-01 03:50:13
回答 3查看 43关注 0票数 1

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

代码语言:javascript
复制
{
 "name" : "",
  "age" : ""
}

由于这是我创建的第三方API,将会有许多其他开发人员尝试访问它。他们经常犯的一个错误是他们有时会忘记datamodel中的一些字段。例如,他们可能根本忘记输入age的值。

所以他们只会发送name,而不会发送age,如下所示。

代码语言:javascript
复制
{
     "name" : ""
}

如何从我的控制器执行验证检查,以查看开发人员是否忘记在JSON中输入属性age

我试着检查null,但它不起作用。

代码语言:javascript
复制
public async Task<IActionResult> SaveStudent([FromBody] Student stu)
{
    if(stu.age == null) { DISPLAY ERROR } // This doesn't work
...
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-01 03:59:53

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

票数 3
EN

Stack Overflow用户

发布于 2018-08-01 04:01:02

你正在寻找模型验证,就像这样;

代码语言:javascript
复制
public async Task<IActionResult> SaveStudent([FromBody] Student stu)
{
if (!context.ModelState.IsValid)
            {
                context.Result = new BadRequestObjectResult(context.ModelState);
            }
...
}
票数 2
EN

Stack Overflow用户

发布于 2018-08-01 04:09:23

您的模型类应该如下所示:

代码语言:javascript
复制
public class Student 
{
   [Required]
   public string Name {get; set;}

   [Required]
   public int Age {get; set;}
}

然后在控制器中:

代码语言:javascript
复制
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()方法返回的输出在客户端显示自定义的错误或成功消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51621039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档