WebAPI验证DataAnnotation创建运行时异常[HttpStatusCode 500]

时间:2013-10-18 22:02:22

标签: c# asp.net-web-api data-annotations

我似乎无法在Google上找到与此问题相关的任何内容 请帮忙!!

情景:
主要是我有一个WebAPI服务器,其控制器方法需要一个简单的类型作为参数 该API看起来像这样:

public HttpResponseMessage Foo([FromBody] LoginModel form)
{
     // ...some code
     return this.Request.CreateResponse(HttpStatusCode.OK);
}

并且LoginType类如下所示:

public class LoginModel
{
    [Required]
    [EmailAddress(ErrorMessage = "Please have a Email address format")]
    public string Email;

    [Required]
    [StringLength(20, MinimumLength = 6, ErrorMessage = "Password must be between 6 and 20 characters")]
    public string Password;
}

客户端尝试运行API方法时出现问题。我传了一个看起来像这样的json {“电子邮件”:“xxx@xxx.com”,“密码”:“oooooo”}

....我得到以下异常

例外消息:
“XXXX.Models.Login”类型的“字段'电子邮件'归因于一个或多个验证属性。不支持字段上的验证属性。请考虑使用公共属性进行验证。

当我从Fiddler发出api电话时也会发生同样的情况!!

注意:
如果我删除[必需]之类的各种属性,它会顺利运行。当属性到位时,客户端调用永远不会访问该方法。

真的很感激帮助!!!

1 个答案:

答案 0 :(得分:2)

喜欢它说:

  

不支持字段上的验证属性。请考虑使用公共属性进行验证。

所以使用属性;

public string Email { get; set; }