Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC中每个自定义验证只有一条错误消息?_Asp.net Mvc_Validation - Fatal编程技术网

Asp.net mvc MVC中每个自定义验证只有一条错误消息?

Asp.net mvc MVC中每个自定义验证只有一条错误消息?,asp.net-mvc,validation,Asp.net Mvc,Validation,我还没有找到一个明确的答案。在asp.net MVC 5中,当某些字段仅在某些条件为真时才需要时,我们需要通过继承ValidationAttribute实现自定义验证属性。所以,我有这个: public class RegistrationValidationAttribute : ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validat

我还没有找到一个明确的答案。在asp.net MVC 5中,当某些字段仅在某些条件为真时才需要时,我们需要通过继承ValidationAttribute实现自定义验证属性。所以,我有这个:

public class RegistrationValidationAttribute : ValidationAttribute
{
   protected override ValidationResult IsValid(object value, ValidationContext validationContext)
   {
      RegistrationModel model = (RegistrationModel)value;
      if (model.IsNewbie)
      {
           if (model.SelectedCoachId == 0)
           {
               return new ValidationResult("Since you are a newbie, you have to select a coach.");
           }

           if (model.SelectedDominantHand == 0)
           {
               return new ValidationResult("If you are a newbie, you have to tell us if you are a leftie or rightie.");
           }
      } 

      return ValidationResult.Success;

   }
}
但是,即使注册人说他是新手,并且没有选择教练,也没有指定他的主导手,这也只会返回1条错误消息。我希望ValidationResult类有一个接受错误消息集合的构造函数

那么,我是否必须将此自定义验证属性拆分为两个自定义验证属性类,其中一个表示MustSelectCoachIfNewbieAttribute,另一个表示MustSpecificDominantHandiFNewBieAttribute


是否可以在单个自定义验证属性类中实现这一点?谢谢。

你不能只返回一个列表吗?这是一个选项吗?方法签名表示它返回ValidationResult,而不是ValidationResult的集合。在我们的应用程序(MVC3)中,我们使用了一个自定义验证引擎,它返回一个ValidationResult列表,并通过ModelState.AddModelError将它们添加到ModelState。但是你可能只需要这样的东西:哈,这篇文章看起来很有趣。我会试一试的。非常感谢。它应该内置到官方MVC框架中。请看这里: