在使用 DataAnnotation 验证 ASP.NET MVC4 中的复杂类时遇到了一个问题。
让我们有一个以下模型(简化)
public class Customer
{
[Required]
[StringLength(8, MinimumLength = 3)]
public string UserName { get; set; }
[Required]
[StringLength(8, MinimumLength = 3)]
public string DisplayName { get; set; }
}
public class Order
{
public Customer customer { get; set; }
}
然后我尝试在我的 Controller 中验证这个模型的一个实例:
// CREATE A DUMMY INSTANCE OF THE MODEL
Customer cust = new Customer();
cust.UserName = "x";
cust.DisplayName = "x";
Order orderModel = new Order();
orderModel.customer = cust;
// VALIDATE MODEL
TryValidateModel(orderModel); // ModelState.IsValid is TRUE (which is incorrect)
TryValidateModel(cust); // ModelState.IsValid is FALSE (whic is correct}
orderModel 的验证应该会失败,因为 cust.UserName 只有 1 个字符,但模型需要 3 个字符。这同样适用于 cust.DisplayName。但是当我验证一个纯 Customer 类时,它会按预期失败。
知道哪里出了问题吗?
谢谢
智日
最佳答案
DataAnnotations 不会自行挖掘您的对象。您有两个选择:
1--编写自定义验证器检查子属性
2--创建一个 View 模型,其中填充了装饰有数据注释的简单属性
关于c# - ASP.NET MVC4 中复杂类的验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12197763/