2012-10-19 4 views
1

선언 방법 ... 내 MVC 응용 프로그램에서 포스트 백을 수행 할 때사용자 정의 유효성 내가 거기에 다음과 같은 속성 정의와 송장 개체가

[CustomValidation(typeof(InvoiceValidator), "ValidateInvoiceDate")] 
public DateTime InvoiceDate { get; set; } 

은 내가 얻을를 찾을 수 없습니다 송장 객체는 다시 다음

public static class InvoiceValidator 
{ 
    public static ValidationResult ValidateInvoiceDate(DateTime invoiceDate, ValidationContext context) 
    { 
     // some validation code (omitted) 
    } 
} 

내 문제는 t을 받고있는 것 같다 ...

if(ModelState.IsValid) 
{ 
    SaveInvoice(invoice); 
} 

내 검증은 다음과 같습니다 ... 이렇게 그는 단순히 예외를 던지는 순간으로 작업 할 일을 댐 :

The CustomValidationAttribute method 'ValidateInvoiceDate' does not exist in type 'InvoiceValidator' or is not public and static. 

이 문장은 분명 옳지 않다, 발리 클래스가 존재하므로 바로 수정 (공공 정적)와 방법을 수행합니다. 이 코드는 전에로드를 사용했지만 일반적으로 잘 작동하지만 이번에는 작동하지 않습니다.

다른 아이디어로 인해이 예외가 발생할 수있는 원인은 무엇입니까?

것들 나는 시도했다 : (컴파일시 오류없이)

깨끗한 솔루션 및 전체 다시 빌드합니다. 새 값 방법/검증 클래스와 리팩토링 속성의 이름을 변경 한 다음에 물어 스크래치 머리 을 다시 컴파일 나는 이유를 명확하게 선언 볼 수 없기 때문에 내 코드가 제대로 실행하거나 뭔가되지 않는 것처럼 여기

나에게 보인다 공공 정적 메서드는 그 이외의 선언되지 않은 오류가 발생합니다.

답변

1

확인은

그것은 밝혀 .... 그것을 발견이 whas 잘못된 :

그것은 바로 형이 충분한 특이 이름과 몇 가지 있었다
[CustomValidation(typeof(InvoiceValidator), "ValidateInvoiceDate")] 

은 "대해서 typeof (InvoiceValidator)"동안 T4가 생성 한 코드는 컴파일러가 그 타입과 일치하도록 더 가까운 범위에서 같은 이름을 가진 타입을 생성하고있었습니다.

나는 다소 짜증이났다. 컴파일러는 런타임 오류가 아닌 모호한 형식 참조에 예외를 발생시켜야한다.

나쁜 Microsoft !!

+0

수정 사항은 까다 롭습니다. 좋은 형사! – trailmax

1

ValidateCurrencyCode 귀하의 힌트입니다. 을 사용하여 CurrencyCode 필드의 유효성을 검사하고 있습니까? 다른 필드에서 사용하는 것처럼 보이지만 유효성 검사기 클래스에서 메서드를 구현하지 마십시오.

+0

내 잘못 (잘못된 오류가 발생했습니다) 인보이스 날짜 입력란에 같은 내용이 표시됩니다. 수정 해주세요. 죄송합니다. 수정 : – War