2016-09-19 11 views
0

モデルクラスをジェネリッククラスで検証したいのは、入力中に各メソッドで毎回チェックしたくないからです。ここでは汎用クラスを作ったが、ModelState.IsValidは機能しない。GenericクラスのModelStateを確認するC#

public class Validator<T> where T : class 
{ 
    public ApiResponse ValidateInput(T t) 
    { 
     try 
     { 
      if (t != null) 
      { 
       if (!ModelState.IsValid) 
       { 
        return JsonResponse.GetResponse(ResponseCode.Failure, ModelState.Values.FirstOrDefault().Errors[0].ErrorMessage); 
       } 
      } 
      else 
      { 
       return JsonResponse.GetResponse(ResponseCode.Failure, ErrorMessage.InvalidRequest); 
      } 
     } 
     catch (Exception ex) 
     { 
      LogHelper.CreateLog(ex); 
      return JsonResponse.GetResponse(ResponseCode.Exception, ErrorMessage.Oops); 
     } 
    } 
} 

ApiResponse私は応答の特定のタイプのために作った私のカスタムクラスです。前もって感謝します。

+0

[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)を提供してください。 –

+1

'ModelState'は' Controller'プロパティです。したがって、あなたは 'BaseController'にあなたの機能を実装し、継承するべきです。あなたのコードはコンパイルされていますか? –

+0

コンパイルしていないわけではありませんが、ModelStateの後には何もありません。 IsValid私は自分自身を入れました –

答えて

0

ModelStateが機能していないわけではありません。ModelState.IsValidメソッドを使用している間は、モデルの状態が有効でない場合、エラーが発生したり、

あなたはModelStateチェックのための内部ifではなく、else節のためにnullを返します。

私はあなたがさらなるコードを共有しなかったので、なぜ私はおそらく知ることができません。

+0

返信いただきありがとうございます、これは私の問題の主要な部分です、(!ModelState.IsValid) { return JsonResponse.GetResponse(ResponseCode.Failure、ModelState.Values.FirstOrDefault()。Errors [0] .ErrorMessage); } –

+0

いいえ、問題は、 'ModelState'が' Controller'プロパティーであるため、彼のコードがコンパイルされないということです。 –

関連する問題