2016-03-29 3 views
0

Я пытаюсь добавить эту строку ModelState.AddModelError(string key, string errorMessage); в IsValid Функция ValidationAttribute класс, но сбой.Как получить доступ к ModelState.AddModelError() из функции IsValid класса ValidationAttribute

[AttributeUsage(AttributeTargets.Property, AllowMultiple = true, Inherited = true)] 
    public class AtleastOneAttribute : ValidationAttribute, IClientValidatable 
    { 
     // For Server side 
     protected override ValidationResult IsValid(object value, ValidationContext validationContext) 
     { 
      if (value != null) 
      { 
       var oHobby=value as IEnumerable; 

       foreach (var _object in oHobby) 
       { 
        Hobby _oHobby = (Hobby)_object; 
        if (_oHobby.IsSelected) 
        { 
         return ValidationResult.Success; 
        } 
       } 

      } 
      ModelState.AddModelError("Hobbies", "Err message...."); 

      return new ValidationResult(FormatErrorMessage(validationContext.DisplayName)); 
     } 

скажите мне, как получить доступ к ModelState.AddModelError из IsValid функции класса ValidationAttribute?

благодаря

+0

что не удается? любые ошибки? – Haris

+0

ModelState.AddModelError() недоступен в функции isValid. так что делать в коде для доступа к нему? – Mou

+0

Вы не получаете доступ к 'ModelState', и вы не добавляете' ModelStateError' в 'ValidationAttribute'. Кажется, вы смущены тем, что делает этот атрибут. Когда вы возвращаете 'ValidationResult'other, чем' Success', 'DefaultModelBinder' добавляет' ModelStateError' во время процесса привязки (и 'ModelState.IsValid' становится' false' –

ответ

0

ModelState не доступен в IsValid функции. IsValid метод добавляет ошибку в ModelState через это возвратного заявление, так что если вам нужно добавить ошибку просто вернуть его:

return new ValidationResult("Err message...."); 
Смежные вопросы