当输入是所有字符串时,MVC DataAnnotation MaxLength失败

时间:2015-06-05 19:56:28

标签: jquery asp.net-mvc jquery-validate unobtrusive-validation

我有一个MVCV5项目的数据注释,它在大多数情况下都能正确验证。但是,如果用户仅输入空格(例如4个空格),则验证不会在客户端捕获它(尽管验证会在发布时捕获它)。有没有办法让这些在客户端正确验证?

[StringLength(3, ErrorMessage = "Must be under 3 characters")]
[RegularExpression(@"^[0-9]{0,3}$", ErrorMessage = "Area code should be 3 digits only")]
public string AreaCode { get; set; }

我正在使用以下库:

jQuery.Validation: version 1.13.1
Microsoft.jQuery.Unobtrusive.Validation: version 3.2.3

3 个答案:

答案 0 :(得分:0)

我建议使用IValidateObject进行模型级验证,然后使用IsNullOrWhiteSpace属性验证空字符串/空/空格。

public class Model : IValidatableObject 
{ 
   public string FirstName { get; set; } 
} 

public IEnumerable<ValidationResult>Validate(ValidationContext validationContext) 
{ 
   if (String.IsNullOrWhiteSpace(FirstName)) 
   { 
      yield return new ValidationResult("First Name Required", new string[] { "FirstName" }); 
   } 
}

答案 1 :(得分:0)

好吧,如果您将输入限制为3个字符,快速的方法是使用<input type='text' maxlength="3"... 明确说明:

required

对于空格(仅限),jquery validate应该使用<div ng-controller="MyTextbox"> <p>Fecha de ultima actualizacion: {{nodeID1}} </p> 来捕获它。 HTH

答案 2 :(得分:0)

我能够通过查看&#34;可选&#34;来解决这个问题。功能

可选功能(根据此博文): http://lagod.id.au/blog/?p=514&cpage=1#comment-213145不告诉您该字段是否可选。它只是告诉你该字段是否为空。

可选功能返回:

!$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";

所以我查看了所需的方法,并注意到它在检查字段长度之前修剪字段值。

这是一个简单的修复,因此不是返回:

$.trim( value ).length > 0;

我把它设置为返回:

value.length > 0;

即使您只输入一个空格,也会导致它验证字段。所以现在我的zipcode验证你是否输入了一个空格,因为它应该只允许数字。