2011-08-25 18 views
16

Tôi có điều này trong chế độ của tôi:MVC3 validation jquery lọc MINLENGTH không làm việc

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

này kết thúc trong:

<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> 

Tại sao MINLENGTH đang được bỏ qua bởi trình biên dịch? Làm thế nào tôi có thể "bật nó lên"?

Trả lời

32

Thay vì sử dụng MinLength thuộc tính sử dụng này để thay thế:

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

String Length MSDN

Ưu điểm: không cần phải viết tùy chỉnh thuộc tính

+0

'MinLength' hiện được hỗ trợ. Xem câu trả lời @Josh. – Mrchief

0

Kiểm tra điều này question. Đọc các bình luận có vẻ như cả minlength và maxlenght đều không hoạt động. Vì vậy, họ đề nghị sử dụng thuộc tính StringLength cho maxlenght. Tôi đoán bạn nên viết một thuộc tính tùy chỉnh cho các min legth

cho tùy chỉnh thuộc tính bạn có thể làm một cái gì đó như thế này

[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; 
    } 
} 

Hy vọng nó giúp

+0

bạn đã đúng, không tìm thấy điều này trước đây! – YesMan85

9

Thay vì đi qua những rắc rối của việc tạo ra các thuộc tính tùy chỉnh ... tại sao không sử dụng cụm từ thông dụng?

// 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!")] 
Các vấn đề liên quan