如何使用ASP.NET MVC 2验证复杂模型?
public class UserModel {[Required(ErrorMessage =“Le nom est requis。”)] [UIHint(“String”)] [DataType(DataType.Text)] [DisplayName(“Nom”)] public string Lastname {get; 组; }
[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
编写您自己的验证器,您可以在其中使用Enum.IsDefined
方法来确定专业的值是否正确设置。
您只需创建将从ValidationAttribute
派生并重写IsValid
方法的类RequiredEnumAttribute
。
示例在这里可用。
链接地址: http://www.djcxy.com/p/56603.html上一篇: How can I validate a complex model using ASP.NET MVC 2
下一篇: User registration page, with a defined user MODEL (MVC )