C# CompareAttribute Always抛出与ValidationResult不匹配

C# CompareAttribute Always抛出与ValidationResult不匹配,c#,asp.net-mvc,C#,Asp.net Mvc,我在ASP.NET MVC项目中检查[CompareAttribute],我意识到该声明在MVC4版本5.2.3.0中无法正常工作。DataAnnotations库的运行时版本为v4.0.30319 这里的问题是,当我使用这些值将EditView发布到EditAction时,EmailAddress=test@test.com,确认邮件=test@test.com[CompareAttribute]抛出此验证错误“电子邮件地址和确认邮件不匹配”。但是你可以看到这两个值是相同的。是虫子还是我误解了

我在ASP.NET MVC项目中检查
[CompareAttribute]
,我意识到该声明在MVC4版本5.2.3.0中无法正常工作。DataAnnotations库的运行时版本为v4.0.30319

这里的问题是,当我使用这些值将EditView发布到EditAction时,
EmailAddress=test@test.com
确认邮件=test@test.com
[CompareAttribute]
抛出此
验证错误
“电子邮件地址和确认邮件不匹配”。但是你可以看到这两个值是相同的。是虫子还是我误解了什么

让我们看看代码:

我的部分雇员类别:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using work18.Models;

namespace work18.Models
{
    [MetadataType(typeof(EmployeeMetaData))]
    public partial class Employee
    {
        [CompareAttribute("EmailAdress")]
        public string ConfirmEmail { get; set; }

    }

    public class EmployeeMetaData
    {           
    }
}
控制器内响应HttpPost请求的编辑功能:

public ActionResult Edit([Bind(Include = "ID,FullName,Gender,Age,
        HireDate,EmailAdress,Salary, PersonalWebSite")] Employee employee)
    {
        if (ModelState.IsValid)
        {
            db.Entry(employee).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(employee);
    }
那么你对这个问题有什么知识或建议吗

编辑问题已解决


这是因为一个非常非常愚蠢的错误。如果您在“编辑操作”方法中仔细搜索代码,您将看到include属性中没有引起错误的
ConfirmEmail

如果您查看以下行:

[Bind(Include = "ID,FullName,Gender,Age,
    HireDate,EmailAdress,Salary, PersonalWebSite")
在编辑操作方法中,您将看到没有任何属性,例如
ConfirmEmail
,因此它将作为null发布到此方法。这就是
[Compare]
属性将此值获取为null的方式。如果您查看Compare属性的源代码,您将获得原因