我有一个模特:
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
密钥,它会正确地将其标记为无效。
答案 0 :(得分:2)
这是设计的。如果模型为null,则不执行验证。另一方面,如果您的模型不为null,但Bar1
属性为null或空字符串,则会出现验证错误。
例如,您将收到以下有效内容的验证错误:
{ "Bar2": "Bazinga" }
或与此一起:
{ "Bar1": null, "Bar2": "Bazinga" }
或与此一起:
{ "Bar1": "", "Bar2": "Bazinga" }