为什么我的null模型会验证?

时间:2013-08-14 14:37:26

标签: asp.net asp.net-mvc asp.net-mvc-5

我有一个模特:

public class Foo
{
    [Required]
    public string Bar1 { get; set; }

    public string Bar2 { get; set; }
}

我在ASP.NET MVC API中验证:

public HttpResponseMessage Post(Foo foo)
{
    if (ModelState.IsValid)
    {
        // Valid
    }
    else
    {
        // Invalid
    }
}

如果我发送没有键/值对的POST(使myModel为null),我标记的ModelState是有效的。为什么是这样?如果我只提供Bar2密钥,它会正确地将其标记为无效。

1 个答案:

答案 0 :(得分:2)

这是设计的。如果模型为null,则不执行验证。另一方面,如果您的模型不为null,但Bar1属性为null或空字符串,则会出现验证错误。

例如,您将收到以下有效内容的验证错误:

{ "Bar2": "Bazinga" }

或与此一起:

{ "Bar1": null, "Bar2": "Bazinga" }

或与此一起:

{ "Bar1": "", "Bar2": "Bazinga" }