2013-05-16 5 views
0

코드에서 범위 (또는 다른 모델 DataAnnotations 속성)를 설정하고 DataAnnotations의 모든 동작을 유지할 수 있습니까?MVC 코드의 데이터 주석 속성

즉, ValidationMessageFor을 계속 사용할 수있는 방식으로 코드의 최소값 (예 : 페이지로드)을 설정하려는 소수 모델이 있습니까?

내 현재 "정적"모델

[Required] 
[DisplayName("Price")] 
[RegularExpression(@"[0-9]+(\.[0-9][0-9]?)?$", ErrorMessage = "Invalid price format")] 
public decimal MinimumPrice { get; set; } 

감사합니다!

답변

0

아니요, DataAnnotation은 컴파일 타임에 코드로 컴파일되며 런타임에 변경할 수 없습니다.

DataAnnotations 사용을 주장하면 다른 선택의 여지가 없습니다.

다른 작업을 수행하려는 경우 다른 옵션이 많이 있습니다. 변수를 전달할 수는 있지만 (변수를 전달할 수는 없지만) 원하는 변수에서 값을 읽는 고유 한 특성을 작성할 수 있습니다.

또는 FluentValidation을 사용할 수 있습니다.

+0

감사합니다. Mman, 제가 확인해 드리겠습니다. – Salty

0

당신은 당신이 유창함 API를 사용하여 원하는 몇 가지를 얻을 수 있습니다 : 그것은 주석을 사용하는 유창한 구성 등을 사용하는 것이 좋습니다 몇 가지를 들어

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<SomeClass>() 
     .Property(x => x.MinimumPrice) 
      .IsRequired() 
      .HasColumnType("decimal") 
      .HasPrecision(18, 2);  
      // default vals for decimal type. 18 = precision = how many digits in 
      // total. 2 = scale = digits after decimal     
} 

합니다.

Further reading.

+0

뷰 모델이 아닌 데이터베이스가 변경됩니다. –

관련 문제