2010-03-22 6 views
30

Tôi có thể sử dụng MVC 2 DataAnnotations để chỉ định độ dài tối thiểu cho trường chuỗi không?ASP.NET-MVC 2 DataAnnotations StringLength

Có ai đã làm điều này hay họ đã tạo thuộc tính tùy chỉnh và liệu bạn có phiền khi chia sẻ nguồn không?

Trả lời

73

Nếu bạn đang sử dụng asp.net 4.0, bạn có thể sử dụng thuộc tính StringLength để chỉ định độ dài tối thiểu.

Ví dụ:

[StringLength(50, MinimumLength=1)] 
public string MyText { get; set; } 
+2

Không, chúng tôi hiện chưa sử dụng 4.0 và cách mọi thứ xảy ra ở đây sẽ không diễn ra trong một thời gian dài. :) – griegs

+0

FYI .. Nếu bạn "under-post" (nghĩa là bạn không đăng một trường biểu mẫu gọi là "MyText"), xác nhận StringLength trên thuộc tính đó sẽ bị bỏ qua. [Đây là một bài viết] (http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html) giải thích kịch bản này bằng cách sử dụng một thuộc tính tương tự (RequiredAttribute) . – tbehunin

7

Sử dụng một thuộc tính biểu thức chính quy. Chúng cũng được diễn giải ở phía máy khách.

[RegularExpression(Regexes.MinStringLength)] 
public string MyText { get; set; } 

Trường hợp Regexes.MinStringLength là lớp biểu thức chính quy tĩnh. Nội tuyến sẽ trông giống như sau:

[RegularExpression(@"^.{5,10}$")] // valid five to ten characters 
public string MyText { get; set; } 
+0

Regexes.MinStringLength dường như được phát triển tại nhà, có lẽ bạn có thể đưa vào một ví dụ hoạt động mà không cần các định nghĩa khác? Có thể [RegularExpression (". {1}")], thay đổi 1 cho bất kỳ độ dài tối thiểu nào bạn muốn. –

+0

Xin lỗi, bạn nên đọc [RegularExpression (". {1,}")] - ref http://msdn.microsoft.com/en-us/library/az24scfc.aspx –

+0

Chắc chắn - hãy xem cập nhật. –