C# CompareAttribute Always抛出与ValidationResult不匹配
我在ASP.NET MVC项目中检查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]抛出此验证错误“电子邮件地址和确认邮件不匹配”。但是你可以看到这两个值是相同的。是虫子还是我误解了
[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属性的源代码,您将获得原因