那么,是否可以结合3?
当我向服务器发送不符合模型注释验证的请求时(本例中为空电子邮件)ModelState.IsValid为true。
模型
public class UpdateModel
{
[Required]
public string Email { get; set; }
public string Name { get; set; }
}
模型活页夹
public class MyModelBinder : IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
var data = actionContext.Request.Content.ReadAsStringAsync().Result;
var model = JsonConvert.DeserializeObject<UpdateModel>(data);
bindingContext.Model = model;
return true;
}
}
ApiController中的操作
public IHttpActionResult Update(UpdateModel model)
{
if (!ModelState.IsValid)
{
// this never happens :-(
}
}
相关但对于MVC而非WebApi:Custom model binding, model state, and data annotations
答案 0 :(得分:0)
在Model Binder中处理了通过DataAnnotation进行的验证。如果您使用自己的ModelBinder,则必须在ModelBinder中对DataAnnotation进行显式调用验证 - 如果您希望通过DA进行自动验证。