在允许发布表单之前,有没有办法使用数据注释来比较两个表单字段(例如确认电子邮件地址)是否相同?
例如。正则表达式数据注释可以使用匹配函数来引用ViewModel中的另一个属性吗?
答案 0 :(得分:44)
public string EmailAddress {get; set;}
[Compare(nameof(EmailAddress), ErrorMessage = "Emails mismatch")]
public string VerifiedEmailAddress { get; set; }
答案 1 :(得分:14)
作为一个可能的选项自我验证:
使用方法验证实现接口 IValidatableObject ,您可以在其中放置验证码。
public class TestModel : IValidatableObject
{
public string Email{ get; set; }
public string ConfirmEmail { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Email != ConfirmEmail)
{
yield return new ValidationResult("Emails mismatch", new [] { "ConfirmEmail" });
}
}
}
请注意:这只是服务器端验证。