我想實現我的asp.net MVC 2應用程序數據驗證,以下斯科特谷的好貼在這裏:http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx自定義驗證在MVC2澄清 - 繼斯科特谷的一個例子
我現在需要的不僅僅是基本的驗證更多(Required,Range,StringLength ...)
我想實現一個重複的檢查器,但不幸的是他的帖子開始丟失自定義驗證部分中的細節。
參見:
第4步:創建自定義[郵件]驗證屬性
.NET框架中的System.ComponentModel.DataAnnotations命名空間包括了許多內置的驗證屬性,這些屬性可以使用。我們在上面的示例中使用了4個不同的 - [必需],[字符串長度],[範圍]和[常規表達式]。
您還可以選擇定義您自己的自定義驗證屬性並使用它們。您可以通過派生自System.ComponentModel.DataAnnotations命名空間中的ValidationAttribute基類來定義完全自定義的屬性。或者,如果您只想擴展其基本功能,則可以選擇從任何現有的驗證屬性派生。
所以這就是我到目前爲止......我從哪裏去這裏?
(請注意,我簡化了這個對我的問題的緣故,我認識到檢查重複的人對象在現實生活中,你將不得不做的比第一次檢查和姓)
[MetadataType(typeof(PersonMetaData))]
public partial class Person
{
//Validation rules for the Person class
[Bind(Exclude = "PersonID")]
public class PersonMetaData
{
//[DisplayName("Person")]
[Required(ErrorMessage = "A Person Code is required")]
[DuplicatePerson(ErrorMessage = "Bad!")]
public object PersonCode { get; set; }
}
}
public class DuplicatePersonAttribute : ValidationAttribute
{
readonly PeopleDB peopleDB = new PeopleDB();
public bool IsDuplicate(object value)
{
//var isDuplicate = peopleDB.People.Select(x => x.PersonCode == value);
//Return false if duplicate in DB
return false;
}
}
我會從「ValidationAttribute'提供什麼覆蓋?」我傾向於使用自定義驗證,因爲在同一個類上有驗證方法的好處。 – arootbeer 2011-03-09 06:03:44