Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

FluentValidation: validation type names must be unique

I have the following rules specified in my code

    RuleFor(x => x.Auction_Round1Ring1Start).GreaterThan(DateTime.Now);

    RuleFor(x => x.Auction_Round1Ring1End).GreaterThan(x => x.Auction_Round1Ring1Start);

    RuleFor(x => x.Auction_Round1Ring2Start).GreaterThan(x => x.Auction_Round1Ring1End);
    RuleFor(x => x.Auction_Round1Ring2End).GreaterThan(x => x.Auction_Round1Ring2Start);

    RuleFor(x => x.Auction_Round1Ring3Start).GreaterThan(x => x.Auction_Round1Ring2End);
    RuleFor(x => x.Auction_Round1Ring3End).GreaterThan(x => x.Auction_Round1Ring3Start);

    RuleFor(x => x.Auction_Round2Start).GreaterThan(x => x.Auction_Round1Ring3End);

And I get this error

Validation type names in unobtrusive client validation rules must be unique. The following validation type was seen more than once: required

I get this error on this line in a view

@Html.EditorForModel()
like image 451
Sachin Kainth Avatar asked Mar 08 '26 01:03

Sachin Kainth


1 Answers

Make sure that you haven't decorated your view model class properties with any data annotation attributes.

Correct:

[Validator(typeof(MyViewModelValidator))]
public class MyViewModel
{
    public DateTime Auction_Round1Ring1Start { get; set; }
    public DateTime Auction_Round1Ring1End { get; set; }

    public DateTime Auction_Round1Ring2Start { get; set; }
    public DateTime Auction_Round1Ring2End { get; set; }

    public DateTime Auction_Round1Ring3Start { get; set; }
    public DateTime Auction_Round1Ring3End { get; set; }

    public DateTime Auction_Round2Start { get; set; }
}

Wrong:

[Validator(typeof(MyViewModelValidator))]
public class MyViewModel
{
    [Required]
    public DateTime Auction_Round1Ring1Start { get; set; }
    public DateTime Auction_Round1Ring1End { get; set; }

    public DateTime Auction_Round1Ring2Start { get; set; }
    public DateTime Auction_Round1Ring2End { get; set; }

    public DateTime Auction_Round1Ring3Start { get; set; }
    public DateTime Auction_Round1Ring3End { get; set; }

    public DateTime Auction_Round2Start { get; set; }
}
like image 124
Darin Dimitrov Avatar answered Mar 10 '26 15:03

Darin Dimitrov