我有一个模特:
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" }