2016-03-29 15 views
0

ModelState.AddModelError(string key, string errorMessage);IsValidの関数ValidationAttributeクラスに追加しようとしましたが失敗します。ValidationAttributeクラスのIsValid関数からModelState.AddModelError()にアクセスする方法

[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)); 
     } 

方法ValidationAttributeクラスのIsValid関数からModelState.AddModelErrorへのアクセスを教えて?

おかげ

+0

失敗しているでしょうか?任意のエラー? – Haris

+0

ModelState.AddModelError()は、isValid関数ではアクセスできません。コードにアクセスするにはどうしたらいいですか? – Mou

+0

あなたは 'ModelState'にアクセスせず、' ValidationAttribute'に 'ModelStateError'を追加しません。あなたはその属性が何をしているのか混乱しているようです。 'Success'以外の' ValidationResult'を返すと、 'DefaultModelBinder'はバインディング処理中に' ModelStateError'を追加します( 'ModelState.IsValid'は' false'になります) –

答えて

0

ModelStateIsValid機能ではアクセスできません。あなたがエラーを追加する必要がある場合はそれを返すようIsValid方法は、それのreturn文を通じてModelStateにエラーを追加します。

return new ValidationResult("Err message...."); 
関連する問題