C# CompareAttribute始终返回false

C# CompareAttribute始终返回false,c#,asp.net-mvc-4,compare-attribute,C#,Asp.net Mvc 4,Compare Attribute,我有一个为我的模型自动生成的分部类,我通过创建一个元数据类来扩展它,该类用元数据和属性装饰字段/属性。我已经添加了另一个分部类,所以我可以给它一个email的string属性,但我不希望它存储在数据库中。我只想使用它与第一个条目进行比较以进行验证/比较,但是视图总是返回错误消息,说明无论输入如何,它们都不相同 [MetadataType(typeof(EmployeesMetadata))] [DisplayColumn("FullName")] public partial class Emp

我有一个为我的模型自动生成的分部类,我通过创建一个元数据类来扩展它,该类用元数据和属性装饰字段/属性。我已经添加了另一个分部类,所以我可以给它一个email的string属性,但我不希望它存储在数据库中。我只想使用它与第一个条目进行比较以进行验证/比较,但是视图总是返回错误消息,说明无论输入如何,它们都不相同

[MetadataType(typeof(EmployeesMetadata))]
[DisplayColumn("FullName")]
public partial class Employees
{
    [CompareAttribute("EmailAddress")]
    public string ConfirmEmail { get; set; }
}
public class EmployeesMetadata
{
    public string EmailAddress { get; set; }
}

我不太清楚为什么比较总是错误的。

去掉那些分部类,使用一个包含属性的视图模型
公共字符串EmailAddress{Get;set;}
[CompareAttribute(“EmailAddress”)]公共字符串ConfirmEmail{Get;set;}
。基于视图模型进行查看,发布时,如果
ModelState
有效,请将视图模型
EmailAddress
属性映射到数据模型。然后,您可以添加额外的验证属性,如
[EmailAddress]
等。我必须使用分部类,因为我使用的employeemetadata带有大量属性修饰。我只发布了相关字段,这就是原因。在模型中,我有电子邮件,但没有确认电子邮件,这就是为什么我在部分课程中有它。知道如何通过当前的方法解决这个问题吗?我必须使用分部类?不,你不要!。使用视图模型-它是视图模型中使用验证属性装饰的属性