我有模特儿
[Required] [EmailAddress] [Remote("EmailValidation", "Account", ErrorMessage = "{0} already has an account, please enter a different email address.")] [Display(Name = "Email")] public string Email { get; set; } [Required] [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] [DataType(DataType.Password)] [Display(Name = "Password")] public string Password { get; set; } [DataType(DataType.Password)] [Display(Name = "Confirm password")] [System.ComponentModel.DataAnnotations.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] public string ConfirmPassword { get; set; }
和注册表格:
当我输入短密码 - 验证火灾时,当我输入不同密码确认密码 - 验证时会触发,但是当我输入数字123456
时,客户端没有任何反应,只是在服务器端,毕竟我得到错误.
http://i.imgur.com/jY8bymy.png(链接截图)
为什么我可以在客户端获得验证DataType.Password?
当我在互联网上搜索这样的问题时,我只是得到解决方案use Html.PasswordFor or Html.EditorFor instead of Html.TextBoxFor
.
该DataType
属性不用于框外验证,主要用于渲染.例如,如果您用于EditorFor
在内部呈现属性,它将使用该DataType
属性来确定它应呈现的输入类型,即<input type="password" ... />
.PasswordFor
基本上做同样的事情,但不需要DataType
属性.
您的长度验证在客户端工作,因为它由StringLength
属性处理DataType
.如果你想强制执行特定的数据类型验证,我建议你看一下使用RegularExpressionAttribute,然后你会考虑实现自己的自定义验证器.