4

我有一个模型:

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如果我只提供密钥,它会正确地将其标记为无效。

4

1 回答 1

2

这是设计使然。如果您的模型为空,则不执行验证。另一方面,如果您的模型不为空,但Bar1属性为空或空字符串,您将收到验证错误。

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

{ "Bar2": "Bazinga" }

或者用这个:

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

或者用这个:

{ "Bar1": "", "Bar2": "Bazinga" }
于 2013-08-14T14:45:36.880 回答