Asp.net-Mvc-3

FluentValidation 入門問題

  • May 28, 2015

我正在嘗試將 FluentValidation 2.0 與 MVC 3 項目一起使用。我已按照此處的說明在項目中安裝 FV。

這是我的驗證器類:

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”不是屬性類。

我實際上已經在兩種不同的解決方案上進行了嘗試,並且在這兩種解決方案上都遇到了同樣的問題。這可能是微不足道的,但我無法弄清楚。

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

謝謝。

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

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

否則,請修改您的 using 語句以避免驗證器名稱衝突。

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

using Servicestack.FluentValidation;

引用自:https://stackoverflow.com/questions/5346059