比较属性
所述 Compare
属性进行比较的模型的两个属性。
可以使用属性 ErrorMessage
或使用资源文件指定错误消息。
要使用 Compare
属性,请将 using
用于以下命名空间:
using System.ComponentModel.DataAnnotations;
然后,你可以在模型中使用该属性:
public class RegisterModel
{
public string Email { get; set; }
[Compare("Email", ErrorMessage = "The Email and Confirm Email fields do not match.")]
public string ConfirmEmail { get; set; }
}
当此模型验证时,如果 Email
和 ConfirmEmail
具有不同的值,则验证将失败。
本地化的错误消息
与所有验证属性一样,可以使用资源文件中的错误消息。在此示例中,将从资源文件 Resources
加载错误消息,资源名称为 CompareValidationMessage
:
public class RegisterModel
{
public string Email { get; set; }
["Email", ErrorMessageResourceType = typeof(Resources), ErrorMessageResourceName = "CompareValidationMessage")]
public string ConfirmEmail { get; set; }
}
避免属性名称中的字符串
为避免在属性值中使用字符串,在 C#6+中可以使用 nameof
关键字:
public class RegisterModel
{
public string Email { get; set; }
[Compare(nameof(Email), ErrorMessage = "The Email and Confirm Email fields do not match.")]
public string ConfirmEmail { get; set; }
}
占位符在错误消息中
你可以在错误消息中使用占位符。占位符 {0}
将替换为当前属性的显示名称,{1}
将替换为相关属性的显示名称:
public class RegisterModel
{
[Display(Name = "Email")]
public string Email { get; set; }
[Display(Name = "Confirm Email")]
[Compare("Email", ErrorMessage = "The '{1}' and '{0}' fields do not match.")]
public string ConfirmEmail { get; set; }
}
如果模型验证失败,则会出现错误消息
电子邮件和确认电子邮件字段不匹配。