2011-03-17 1 views
8

FluentValidation 2.0을 MVC 3 프로젝트와 함께 사용하려고합니다. 나는 지침 here을 따라 프로젝트 내에 FV를 설치했다.FluentValidation 시작 문제

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.ComponentModel.DataAnnotations; 
using System.Linq; 
using System.Web; 
using HandicapTracker.Configuration; 
using HandicapTracker.Models.Validation; 
using Omu.ValueInjecter; 
using FluentValidation; 
using HandicapTracker.Models.Validation; 

namespace HandicapTracker.Models 
{ 
    [Validator(typeof(TournamentValidator))] 
    public class Tournament : HandicapTrackerModelBase 
    { 
     private const int VisitingTeamIndex = 0; 
     private const int HomeTeamIndex = 1; 

     public Tournament() : this (new League()) 
     { 

     } 
     .... 
} 

그러나 속성이 인식되지 않는 : 나는 속성을 사용하려고 할 경우

다음
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using FluentValidation; 

namespace HandicapTracker.Models.Validation 
{ 
    public class TournamentValidator : AbstractValidator<Tournament> 
    { 
     public TournamentValidator() 
     { 
      RuleFor(x => x.CourseId).NotEmpty(); 
      RuleFor(x => x.TournamentDate).NotEmpty().NotEqual(new DateTime()); 
     } 
    } 
} 

은 다음과 같습니다

이 내 유효성 검사기 클래스입니다. 빌드 할 때 다음과 같은 오류 메시지가 나타납니다.

"System.ComponentModel.DataAnnotations.Validator"는 특성 클래스가 아닙니다.

나는 실제로이 두 가지 솔루션에서 시도해 본 결과 두 가지 모두에서 동일한 문제가 발생했습니다. 그것은 아마 사소한 것이지만, 나는 그것을 이해할 수 없다.

누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?

감사합니다.

답변

24

System.ComponentModel.DataAnnotations 네임 스페이스의 Validator이라는 다른 클래스에서 사용자의 [Validator] 속성을 선택하는 것처럼 보입니다. 속성을 완전히 한정 시키십시오.

[FluentValidation.Attributes.Validator(typeof(TournamentValidator))] 

그렇지 않으면 유효성 검사기 이름 충돌을 피하기 위해 using 문을 수정하십시오.

0

FluentVallidation 네임 스페이스를 직접 사용하면 서비스 스크립트에서 구현해야합니다. 따라서 다음과 같이 쓸 수 있습니다.

using Servicestack.FluentValidation;