2011-03-17 35 views
8

Tôi đang cố sử dụng FluentValidation 2.0 với dự án MVC 3. Tôi đã làm theo hướng dẫn here để cài đặt FV trong dự án.Sự cố khi bắt đầu với FluentValidation

Đây là lớp validator của tôi:

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

Đây là nơi tôi cố gắng để sử dụng thuộc tính:

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

     } 
     .... 
} 

Tuy nhiên, thuộc tính không được công nhận. Khi tôi tạo, tôi nhận được thông báo lỗi sau:

"System.ComponentModel.DataAnnotations.Validator" không phải là một lớp thuộc tính.

Tôi thực sự đã thử điều này trên hai giải pháp khác nhau và có cùng một vấn đề trên cả hai. Nó có thể là một cái gì đó tầm thường, nhưng tôi không thể tìm ra.

Ai đó có thể cho tôi biết tôi đang làm gì sai không?

Cảm ơn.

Trả lời

24

Có vẻ như thuộc tính [Validator] của bạn được chọn trên một lớp khác có tên là Validator trong không gian tên System.ComponentModel.DataAnnotations. Hãy thử hoàn toàn đủ điều kiện cho thuộc tính.

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

Nếu không, hãy sửa đổi các câu lệnh sử dụng để tránh va chạm tên Validator.

0

Không sử dụng trực tiếp không gian tên FluentVallidation, không gian tên phải được triển khai từ servicestack. Vì vậy, bạn có thể viết nó như là

using Servicestack.FluentValidation; 
Các vấn đề liên quan