モデルの注釈も好きです。あなたが持っているかもしれないjQuery検証は、javascriptを無効にしたり、ハッキングしたりして、誰かがあなたのjQuery検証を回避していないことを確認するために、モデルアノテーションとして配置することもできます...
チェックボックスの検証やその他のカスタマイズされた検証を追加するために私が見つけた最も簡単な方法は、ここで説明するようにCustomValidationAttributeを使用することです。
http://weblogs.asp.net/peterblum/archive/2009/12/07/the-customvalidationattribute.aspx
例:
[CustomValidation(typeof(Category), "FinalCheck")]
public partial class Category
{
[CustomValidation(typeof(Category), "TestCategoryName")]
public string CategoryName { get; set; }
public bool Active { get; set; }
public bool ShowOnHomepage { get; set; }
public static ValidationResult FinalCheck(Category pCategory, ValidationContext pValidationContext)
{
if (!pCategory.Active && pCategory.ShowOnHomepage)
return new ValidationResult("The category must be active in order to show it on the homepage.", new List<string> { "Active", "ShowOnHomepage" });
return ValidationResult.Success;
}
public static ValidationResult TestCategoryName(string pNewName, ValidationContext pValidationContext)
{
if (Regex.IsMatch(pNewName, @"^\d"))
return new ValidationResult("Cannot start with a digit", new List<string> { "CategoryName" });
return ValidationResult.Success;
}
}