asp.net – 为什么我的null模型验证?

我有一个模特:

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键,它会正确地将其标记为无效.

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

例如,您将获得以下有效负载的验证错误:

{ "Bar2": "Bazinga" }

或者用这个:

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

或者用这个:

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