2013-01-31 28 views
17

Tôi đang sử dụng asp.net mvc4 trong mô hình của tôi tôi đang sử dụng thuộc tính Maxlength nhưng nó không hoạt động cho chuỗi. Chỉ Stringlength hoạt động bất cứ ai có cùng một vấn đề? nếu có vấn đề làm thế nào để giải quyết? nó không làm việc cho Validate lĩnh vực của tôi Đây là mã của tôiAsp.net mvc dataannotation MaxLength xác nhận không hoạt động

(không hoạt động)

[Required] 
[MaxLength(80)] 
[DisplayName("Contact Name:")] 
public string ContactName { get; set; } 

(làm việc)

[Required] 
[StringLength(80)] 
[DisplayName("Contact Name:")] 
public string ContactName { get; set; } 
+0

tôi không nhận được một lỗi. Vui lòng cung cấp tên ContactName đang ở. – Dom

+0

Tôi không nói rằng tôi đang gặp lỗi. Tôi chỉ nói rằng nó không hoạt động. – Garry

Trả lời

27

Cả hai thuộc tính là trong System.ComponentModel.DataAnnotations namespace

Theo Microsoft Official Website [MaxLenth] thuộc tính trong cho Entity Framework vì Entity Framework biết những gì có thể độ dài tối đa của cột trong cơ sở dữ liệu trong trường hợp của bạn (như varchar (80))

Chỉ định độ dài tối đa của dữ liệu mảng hoặc chuỗi được phép trong thuộc tính.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.maxlengthattribute.aspx

Như trong một trong những bạn nhận xét bạn đã nói bạn không sử dụng Entity Framework trong bài trả lời với @jackncoke nên [MaxLength(80)] sẽ không làm việc

Nhưng trong trường hợp thứ hai [StringLength(80)] đang làm việc vì nó không có bất kỳ sự phụ thuộc nào trên Entity Framework.

SO [StringLength(80)] sẽ làm việc trong cả hai trường hợp nếu bạn đang sử dụng Entity Framework hoặc không có nó

Chỉ định tối thiểu và thời gian ký tự tối đa được phép trong một trường dữ liệu.

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.stringlengthattribute.aspx

5

[MaxLength(80)] thay đổi [StringLength(80)] nhưng có vẻ như bạn đánh bại tôi vào nó !

không phải là người duy nhất của bạn với vấn đề này

MaxLength Attribute not generating client-side validation attributes

+1

vâng tôi biết nó hoạt động với [StringLength (80)] nhưng câu hỏi của tôi là tại sao không với [MaxLength (80)]? Thậm chí accoridng để microsoft nó là attibute hợp lệ nhưng bạn là người đầu tiên đầu tiên cho câu trả lời như vậy +1 cho bạn – Garry

+0

Maxlength đã làm việc cho bất kỳ mô hình của bạn? jackncoke ?? – Garry

+1

Tôi chỉ đang xem xét các dự án cũ và tôi chưa bao giờ sử dụng nó luôn được sử dụng StringLength.Vì vậy, tôi đã được tìm kiếm trên internet để xem nếu có ai khác có loại vấn đề này. Tôi đã thấy mọi người sử dụng nó khi tôi đang tìm kiếm. – jackncoke

3

TRÊN MVC4 maxlength workd đúng cách, tôi phải kiểm tra xem nó

public class RegisterModel 
{ 
    [Required] 
    [Display(Name = "User name")] 
    [MaxLength(5)] //MaxLength worked properly. 
    public string UserName { 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")] 
    [Compare("Password", ErrorMessage = "The password and confirmation password do not match.")] 
    public string ConfirmPassword { get; set; } 
} 

enter image description here

+1

Phiên bản Entity-framework là gì bạn sử dụng? – Pamma

Các vấn đề liên quan