2010-12-17 7 views
1

데이터 주석을 사용하여 클래스 속성을 검증하고 있습니다. 런타임시 메모리에로드 될 외부 파일에 유효성 검증 오류 메시지를 저장하는 요구 사항이 발생했습니다.데이터 주석 오류 메시지를 외부 파일에 저장할 수 있습니까?

은 내가 XML 파일에서 오류 메시지의 colleciton을로드 할 수있을 거라고 생각 다음으로 ErrorMessage을 설정 = [StringVariableHere] ...하지만 당신이 상수를 사용할 필요로 분명히이 작동하지 않습니다 값.

Resource.resx 파일에 errormessages를 저장하면 해당 오류 메시지가 프로젝트에 컴파일되어 런타임에로드 할 수 없거나 잘못되었습니다.

해결책에 대해 조언을 해주실 수 있습니까?

답변

2

데이터 주석 특성을 파생시키고 메시지 원본을 제공 할 수 있습니다. 내 블로그에이 기술을 설명

public class RequiredAttribute : System.ComponentModel.DataAnnotations.RequiredAttribute 
{ 
    private string _displayName; 

    public RequiredAttribute() 
    { 
     ErrorMessageResourceName = "Validation_Required"; 
    } 

    protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
    { 
     _displayName = validationContext.DisplayName; 
     return base.IsValid(value, validationContext); 
    } 

    public override string FormatErrorMessage(string name) 
    { 
     //LOOK HERE! ;) 
     var msg = GetTheTextHereFromYourSource(); 

     return string.Format(msg, _displayName); 
    } 
} 

는 (내 목표는 지역화 된 오류 메시지를 얻을 수 있었다, 그러나 개념은 동일) : http://blog.gauffin.org/2010/11/simplified-localization-for-dataannotations/

+0

안녕 jgauffin, 이것은 완벽 내가 제외하고 필요한 exacly처럼 보이는 한 가지만 ... .Net Framework 4에서만 작동합니다. 원래 게시물에서 3.5를 사용하는 것으로 제한해야한다고 언급 했어야합니다 ... 작동하도록 코드에서 무엇을 변경할 수 있습니까? 감사! –

+0

은 3.5에서 작동해야합니다. 어떤 오류가 발생합니까? – jgauffin

+0

"ValidationContext가 정의되지 않았습니다"라는 오류가 발생합니다 ... –

관련 문제