2011-03-17 70 views
8

我正在嘗試在MVC 3項目中使用FluentValidation 2.0。我已按照指示here在項目中安裝FV。FluentValidation問題入門

這是我的驗證器類:

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

這裏是我嘗試使用屬性:

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

     } 
     .... 
} 

但是,該屬性不被認可。當我生成時,我收到以下錯誤消息:

「System.ComponentModel.DataAnnotations.Validator」不是屬性類。

我已經嘗試了兩種不同的解決方案,並且兩者都有相同的問題。這可能是微不足道的,但我無法弄清楚。

有人能告訴我我做錯了什麼嗎?

謝謝。

回答

24

看起來您的[Validator]屬性正在拾取System.ComponentModel.DataAnnotations命名空間中名爲Validator的另一個類。嘗試完全限定屬性。

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

否則,請修改您的使用語句以避免驗證程序名稱衝突。

0

不要直接使用FluentVallidation命名空間,它應該從servicestack實現。所以你可以把它寫成:

using Servicestack.FluentValidation;