Entity Framework EF 코드가있는 ASP.NET MVC의 StringLength 및 MaxLength 특성
동작 [MaxLength]
과 [StringLength]
속성 의 차이점은 무엇입니까 ?
내가 알 [MaxLength]
수있는 한 (배열의 최대 길이를 확인할 수 있는 예외는 있지만) 이것들은 동일하고 다소 중복됩니까?
MaxLength 는 Entity Framework에서 데이터베이스를 만들 때 문자열 값 필드를 얼마나 크게 만들지 결정하는 데 사용됩니다.
MSDN에서 :
속성에 허용되는 배열 또는 문자열 데이터의 최대 길이를 지정합니다.
StringLength 는 사용자 입력의 유효성을 검사하는 데 사용되는 데이터 주석입니다.
MSDN에서 :
데이터 필드에 허용되는 최소 및 최대 문자 길이를 지정합니다.
방금 다른 게시물에서 배웠지 만 매우 유용한 추가 정보가 있지만 설명서를 찾을 수없는 것 같습니다 (누군가 MSDN에서 링크를 공유 할 수 있다면 놀라 울 것입니다).
이러한 속성과 관련된 유효성 검사 메시지는 실제로 속성과 관련된 자리 표시자를 대체합니다. 예를 들면 다음과 같습니다.
[MaxLength(100, "{0} can have a max of {1} characters")]
public string Address { get; set; }
글자 수 한도를 초과하면 다음을 출력합니다 : "주소는 최대 100 자까지 가능합니다"
내가 알고있는 자리 표시자는 다음과 같습니다.
- {0} = 속성 이름
- {1} = 최대 길이
- {2} = 최소 길이
처음에 이것을 지적한 bloudraak 에게 감사드립니다 .
에 [MaxLength]
와 [StringLength]
속성을 모두 사용했을 때의 결과는 다음과 같습니다 EF code first
. 둘 다 사용 [MaxLength]
하면 레이스 에서 승리합니다. studentname
아래 클래스의 열에 있는 테스트 결과 참조
public class Student
{
public Student () {}
[Key]
[Column(Order=1)]
public int StudentKey { get; set; }
//[MaxLength(50),StringLength(60)] //studentname column will be nvarchar(50)
//[StringLength(60)] //studentname column will be nvarchar(60)
[MaxLength(50)] //studentname column will be nvarchar(50)
public string StudentName { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
}
모든 좋은 대답 ... 유효성 측면에서 MaxLength는 서버 측에서만 검증되고 StringLength는 클라이언트 측에서도 검증됩니다.
MaxLengthAttribute는 Max를 의미합니다. 허용되는 배열 또는 문자열 데이터의 길이
StringLengthAttribute는 Min을 의미합니다. 그리고 최대. 데이터 필드에 허용되는 문자 길이
http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/를 방문하십시오.
아래주의 할 또 다른 점은에 최대 길이의 경우에만 제공 할 수있는 속성 최대 필요한 범위되지에게 분 필요한 범위를. StringLength에 있는 동안 둘 다 제공 할 수 있습니다 .
웹 페이지의 양식에서 텍스트의 최대 입력 길이를 제한하기 위해 속성을 사용할 때 StringLength는 maxlength html 속성을 생성하는 것으로 보입니다 (적어도 MVC 5 테스트에서는). 그런 다음 선택할 텍스트 길이가 최대 텍스트 길이임을 사용자에게 알리는 방법을 결정합니다. stringlength 속성을 사용하면 사용자는 허용 된 길이를 초과하여 입력 할 수 없습니다. maxlength 속성은이 html 속성을 추가하지 않고 대신 데이터 유효성 검사 속성을 생성합니다. 즉, 사용자는 표시된 길이를 초과하여 입력 할 수 있으며 다음 필드로 이동하거나 제출을 클릭 할 때 자바 스크립트의 유효성 검사에 따라 입력 시간이 길어지지 않습니다. 자바 스크립트가 비활성화 된 경우 서버 측 유효성 검사). 이 경우 사용자에게 오류 메시지로 제한 사항을 알릴 수 있습니다.
내 컨텍스트에 아래 줄을 추가하여 해결했습니다.
modelBuilder.Entity<YourObject>().Property(e => e.YourColumn).HasMaxLength(4000);
어떻게 든 [MaxLength]
나를 위해 일 하지 않았다.
'IT박스' 카테고리의 다른 글
Linux / proc / id / maps 이해 (0) | 2020.06.19 |
---|---|
Matplotlib을 사용하여 Python에서 시간 플로팅 (0) | 2020.06.19 |
Python ValueError : 압축을 풀기에는 값이 너무 많습니다 (0) | 2020.06.19 |
CIFS 연결을 강제로 마운트 해제하는 방법 (0) | 2020.06.19 |
T-SQL-기본 매개 변수가있는 기능 (0) | 2020.06.19 |