public class UserModel
{
[Required(ErrorMessage = "Le nom est requis.")]
[UIHint("String")]
[DataType(DataType.Text)]
[DisplayName("Nom")]
public string Lastname { get; set; }
[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 不能与模型验证一起使用。
我应该选择普通模型吗? (这意味着更多的映射,但如果它有效......)
最佳答案
要对复杂对象进行验证,您需要通过创建自己的验证属性来实现自定义验证。我会打出一个简单的例子,但 Phil Haack 在这方面有一篇很棒的文章:
http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
关于asp.net-mvc - 如何使用 ASP.NET MVC 2 验证复杂模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3568359/