2

我正在尝试对具有 DateTime 作为类型的属性做一个条件,它必须大于同一对象的另一个属性并且小于另一个也是同一对象的属性。我的问题是当我尝试应用这些两个 DataAnnotation 它给了我这个错误:

不显眼的客户端验证规则中的验证类型名称必须是唯一的。不止一次看到以下验证类型:是

我在与 Range DataAnnotation 苦苦挣扎后尝试了这个,我知道这不是最好的方法,但是 Range 对我不起作用,它总是给我这个错误:

该字符串未被识别为有效的日期时间。从索引 0 开始有一个未知单词。

这是我的模型(我使用实体框架来生成我的模型,所以我使用部分类来做验证技巧):

 [MetadataType(typeof(AffectationMetadata))]
public partial class AFFECTATION
{

    public DateTime DateDebutVisite { set; get; }

    public DateTime DateFinVisite { set; get; }



    public class AffectationMetadata
    {
        //some other entities

        [Required(ErrorMessage = "Date de début de visite est obligatoire.")]
        [Display(Name = "Date du projet dans la période de la visite * :")]
        [GreaterThan("DateDebutVisite")]
        [LessThan("DateFinVisite")]
        public DateTime DATEAFFECTATION { set; get; }


    }
}

请有人告诉我如何解决这个问题?

4

1 回答 1

0

所以这里有两个问题。首先,万无一失的验证只能看到与自身相同的类中的属性。所以你的班级需要看起来像这样:

[MetadataType(typeof(AffectationMetadata))]
public partial class AFFECTATION
{
    public class AffectationMetadata
    {
        public DateTime DateDebutVisite { set; get; }

        public DateTime DateFinVisite { set; get; }

        //some other entities

        [Required(ErrorMessage = "Date de début de visite est obligatoire.")]
        [Display(Name = "Date du projet dans la période de la visite * :")]
        [GreaterThan("DateDebutVisite")]
        [LessThan("DateFinVisite")]
        public DateTime DATEAFFECTATION { set; get; }


    }
}

第二个问题,这确实是整个事情的症结所在,GreaterThanAttribute实际上LessThanAttribute只是子类,IsAttribute因此它会在同一属性上看到 2 个相同的属性,这会引发错误。我目前正在自己​​寻找解决该问题的方法。如果我找到一个,我会编辑这个答案。

于 2016-10-31T15:28:13.690 回答