2010-08-25 21 views
4

公共類的usermodel { [必需(的ErrorMessage = 「樂NOM EST requis。」)] [UIHint( 「字符串」)] [數據類型(數據類型的複雜模型.Text)] [DisplayName(「Nom」)] public string Lastname {get;組; }如何可以驗證使用ASP.NET MVC 2

 [DataType(DataType.Text)] 
     [UIHint("String")] 
     [DisplayName("Prénom")] 
     public string Firstname { get; set; } 

     [Required(ErrorMessage="La spécialité principale est requise.")] 
     [DisplayName("Spécialité principale")] 
     public Speciality PrimarySpeciality { get; set; } 

     [DisplayName("Spécialité secondaire")] 
     public Speciality SecondarySpeciality { get; set; } 
} 

public class SpecialityModel 
{ 
    [Required(ErrorMessage = "La spécialité est requise.")] 
    public int Id { get; set; } 

    public string Name { get; set; } 
} 

如何要求主要專業而不是第二個? 似乎Required屬性只檢查可爲空,但Specialty不會爲空。

編輯:

閱讀這篇文章http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html 後,我正在重新制定我的問題:如何防止主要對象之前,發生子性能驗證。正如你所看到的,SecondarySpeciality不是必需的,但仍然可以獲得Address類的DataAnnotation的驗證原因。 我在想,mvc2不能用於模型驗證。 我應該用普通模型去? (這意味着更多的映射,但如果它的工作......)

回答

0

寫你自己的驗證,你可以在其中使用Enum.IsDefined方法來確定是否正確設置專業的價值。

您只需創建將從ValidationAttribute派生的類RequiredEnumAttribute並覆蓋IsValid方法。

示例可用here

1

要對複雜對象進行驗證,您需要通過創建自己的驗證屬性來實現自定義驗證。我會打字了一個簡單的例子,但菲爾哈克具有在這個偉大的文章:

http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx

+0

看來這個問題是更多關於如何確認正在發生。 請參閱http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html – mateo 2010-08-25 19:05:58