WebApi,自定义模型绑定器和数据注释

时间:2016-02-11 20:46:21

标签: asp.net-mvc-4 asp.net-web-api asp.net-web-api2 model-binding

那么,是否可以结合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

1 个答案:

答案 0 :(得分:0)

在Model Binder中处理了通过DataAnnotation进行的验证。如果您使用自己的ModelBinder,则必须在ModelBinder中对DataAnnotation进行显式调用验证 - 如果您希望通过DA进行自动验证。