2011-03-17 18 views
8

Estoy intentando usar FluentValidation 2.0 con un proyecto MVC 3. He seguido las instrucciones here para instalar FV dentro del proyecto.Problema al comenzar con FluentValidation

Esta es mi clase de validador:

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()); 
     } 
    } 
} 

Aquí es donde intento utilizar el atributo:

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()) 
     { 

     } 
     .... 
} 

Sin embargo, no se reconoce el atributo. Cuando construyo recibo el siguiente mensaje de error:

"System.ComponentModel.DataAnnotations.Validator" no es una clase de atributo.

En realidad, he intentado esto con dos soluciones diferentes y estoy teniendo el mismo problema en ambos. Probablemente sea algo trivial, pero no puedo entenderlo.

¿Alguien me puede decir lo que estoy haciendo mal?

Gracias.

Respuesta

24

Parece que su atributo [Validator] está mejorando en otra clase llamada Validator en el espacio de nombres System.ComponentModel.DataAnnotations. Pruebe calificar completamente el atributo.

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

De lo contrario, revise sus instrucciones de uso para evitar la colisión del nombre del Validator.

0

No utilice directamente el espacio de nombre FluentVallidation, debe implementarse desde la pila de servicios. Para que pueda escribirlo como

using Servicestack.FluentValidation;