2011-08-25 4 views
16

를 작동하지 내 모드에서이 있습니다MVC3 JQuery와 유효성 검사 MINLENGTH 필터

<div class="editor-label"> 
     <label for="Name">Name</label> 
    </div> 
    <div class="editor-field"> 
     <input class="text-box single-line" data-val="true" data-val-required="Name is required" id="Name" name="Name" type="text" value="" /> 
     <span class="field-validation-valid" data-valmsg-for="Name" data-valmsg-replace="true"></span> 
    </div> 

어떻게 MINLENGTH 컴파일러에 의해 무시되고 온 :

[Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(Registration), ErrorMessageResourceName = "NameRequired")] 
[MinLength(3, ErrorMessageResourceType = typeof(Registration), ErrorMessageResourceName = "NameTooShort")] 
public String Name { get; set; } 

이에 끝? 어떻게 "켜는"수 있습니까?

답변

32

대신 이것을 사용 속성 :

[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 

String Length MSDN

장점 : 사용자 정의 쓸 필요는 지금

+0

'MinLength'가 지원됩니다. @ 조쉬 대답을 참조하십시오. – Mrchief

0

확인하십시오. question. minlength와 maxlenght가 작동하지 않는 것 같습니다. 그래서 maxLength에 StringLength 속성을 사용하는 것이 좋습니다. 나는

+0

당신이 옳다는 전에 이것을 발견하지 못했습니다! – YesMan85

9

대신 사용자 지정 특성을 만드는 번거 로움을 겪고 도움이되기를 바랍니다 당신이

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)] 
public class MyMinLengthAttribute : ValidationAttribute 
{ 
    public int MinValue { get; set; } 

    public override bool IsValid(object value) 
    { 
    return value != null && value is string && ((string)value).Length >= MinValue; 
    } 
} 

같은 것을 할 수있는 사용자 지정 특성에 대한

legth 최소의 사용자 정의 속성을 작성해야 추측 정규식을 사용하지 않는 이유는 무엇입니까? 대신 MinLength를 사용

// Minimum of 3 characters, unlimited maximum 
[RegularExpression(@"^.{3,}$", ErrorMessage = "Not long enough!")] 

// No minimum, maximum of 42 characters 
[RegularExpression(@"^.{,42}$", ErrorMessage = "Too long!")] 

// Minimum of 13 characters, maximum of 37 characters 
[RegularExpression(@"^.{13,37}$", ErrorMessage = "Needs to be 13 to 37 characters yo!")] 
관련 문제