动作参数的必需属性不起作用

时间:2015-08-08 10:53:52

标签: asp.net-web-api2 asp.net-web-api

代码如下:

[HttpPost]
public ResultEntityVM Register([FromBody,Required] RegisterParam createAssessorParam)
{
    if (ModelState.IsValid == false)
    {
        return null;
    }

    //other code
    ResultEntityVM vm = new ResultEntityVM();
    return vm;
}

当参数createAssessorParamnull时,ModelState.IsValid的值为true。为什么呢?

如果我想自动判断参数是否为null,我该怎么办? 不要我只能写代码:

if(RegisterParam  != null)
{
   //other
}

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题并通过实现自定义操作过滤器属性来评估它,该属性评估了操作方法参数的所有验证属性。

我在this blog post中描述了使用ASP.NET Core 1.0的方法,但同样的方法也适用于ASP.NET 4.

答案 1 :(得分:1)

这是针对@ aspV.net网站调整的@MarkVincze答案

describe('Test api Share of voice', () => {
  let apiLink = app.get("apiTestLink") + "/api/<link>";
  it('Status Code = 200', function(done) {
    this.timeout(constant.MAX_WAIT);
    http.get(apiLink, function(res) {
      assert.equal(res.statusCode, 200);
      done();
    });
  });
  //some tests
});

答案 2 :(得分:-1)

在WebAPI中,action参数永远不会为null。它始终由框架实例化。因此,如果要确保它们存在,您宁愿在视图模型的属性上使用Required属性。