2014-09-30 3 views
2

공백을 유효한 항목으로 허용하기 위해 모델 값을 구성하는 방법이 있는지 궁금합니다. 현재 사용자가 공백을 입력하면 모델이 유효하지 않음을 나타내는 오류가 표시됩니다. 나는 공간이 유효 할 수 있도록 "값"필드가 필요EF 공백 허용

public class OrderItemCustomizationOption : BaseModel 
{ 
    [Required()] 
    [Column(Order = 2)] 
    public int OrderItemId { get; set; } 

    [Required()] 
    [Column(Order = 3)] 
    public int CustomizationOptionId { get; set; } 

    [Required()] 
    [Column(Order = 4)] 
    [StringLength(50)] 
    public string Value { get; set; } 

    public virtual OrderItem OrderItem { get; set; } 
    public virtual CustomizationOption CustomizationOption { get; set; } 
} 

-로

모델

정의된다.

+0

모델의 인스턴스를 생성하는 코드를 표시 할 수 있습니까? – DaveRead

+0

'Required'는 EF와는 아무런 관련이 없습니다. 모델 유효성 검사를위한 것입니다. 그것을 제거하고 대신'IValidatableObject'를 확장하여 사용자 정의 유효성 검사를 추가하십시오. –

+0

@Joseph EF는 null 허용 여부를 지정하기 위해이를 사용합니다. – hvd

답변

3

RequiredAttribute은 공백이 포함 된 문자열을 비어있는 것으로 간주합니다. 이 설정은 AllowEmptyString에서 true (및 아마도 ConvertEmptyStringToNulls에서 false까지) 피할 수 있지만이 속성이 나타내는 대부분의 내용이 사라집니다. 일반적으로

당신이 (상관없이 내용의) 문자열과 배열의 길이를 확인하기 MinLengthAttribute을 사용할 수 있습니다 :

[MinLength(1)] 
[Column(Order = 4)] 
[StringLength(50)] 
public string Value { get; set; } 

을 그러나이 경우에는 문자열 특정 유효성 검사를 사용하고 StringLength 속성, 그것은 속성이 있습니다 최소 필수 길이를 지정하는 데 사용할 수 있습니다. 다음과 같이 동일한 코드를 더 잘 작성할 수 있습니다.

[Column(Order = 4)] 
[StringLength(50, MinimumLength = 1)] 
public string Value { get; set; }