Проблема начала работы с FluentValidation - PullRequest
8 голосов
/ 18 марта 2011

Я пытаюсь использовать 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» не является классом атрибута.

Я на самом деле пробовал это на двух разных решениях, и у менята же проблема на обоих.Возможно, это что-то тривиальное, но я не могу понять.

Может кто-нибудь сказать мне, что я делаю неправильно?

Спасибо.

Ответы [ 2 ]

24 голосов
/ 18 марта 2011

Похоже, ваш атрибут [Validator] обнаруживает другой класс с именем Validator в пространстве имен System.ComponentModel.DataAnnotations. Попробуйте полностью определить атрибут.

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

В противном случае пересмотрите операторы использования, чтобы избежать конфликта имен валидатора.

0 голосов
/ 28 мая 2015

Не используйте пространство имен FluentVallidation напрямую, оно должно быть реализовано из сервисного стека. Таким образом, вы можете написать это как

using Servicestack.FluentValidation;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...