比較屬性

所述 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; }
}

當此模型驗證時,如果 EmailConfirmEmail 具有不同的值,則驗證將失敗。

本地化的錯誤訊息

與所有驗證屬性一樣,可以使用資原始檔中的錯誤訊息。在此示例中,將從資原始檔 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; }
}

如果模型驗證失敗,則會出現錯誤訊息

電子郵件確認電子郵件欄位不匹配。