比較屬性
所述 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; }
}
如果模型驗證失敗,則會出現錯誤訊息
電子郵件和確認電子郵件欄位不匹配。