1

FluenValidationASP.NETのWeb API 2.2モデルバインディング短絡のカスタムモデルの検証

RuleFor(x=> x.GenderID).NotNull().WithMessage("Please provide a valid Gender"); 

NULL GenderID

を使用して、次のエンドポイントに従業員をPOSTとすると、サービスから検証が返されます。期待通りの要約。私は非NULL可能GenderID

public class Employee 
{   
    public int GenderID { get; set; }  
} 

を持っている従業員のモデルを変更した場合

[HttpPost("Employee/Create")] 
    public IActionResult Create([FromBody]Employee employee) 
    { 
     try 
     {    
      if (!ModelState.IsValid) 
      { 
       // return validation summary (code omitted for brevity) 
      } 

      var result = _respository.CreateEmployee(employee);    

      return Ok(); 
     } 
    } 

は、その後のサービスは、カスタム検証を処理せずに400不正なリクエストの応答を返します。検証要約は、UIにバインドするために必要です。

GenderIDをnullableにする唯一の理由は、カスタムバリデータから検証サマリーを作成できるようにすることです。

すべてのモデルプロパティをnullに設定する必要なく、カスタム検証を適用するにはどうすればよいですか?

答えて

0

あなたが受け取った悪い要求は、null GenderIdをnullにできないintに変換するエラーが原因だと思います。流暢な検証とは関係ありません。 null GenderIdを受け取るリクエストで期待しているのであれば、私はGenderIdのプロパティをnullableにして、そのルールの中で流暢に管理するべきだと考えています。要求に常にnull以外のGenderIdが含まれていると思われる場合は、GenderIdをnullにできないようにします。常にnullではないと思われるGenderIdがnullの場合、実行時例外がスローされます。

+0

はい、私はすでにその理由を説明しましたが、WebAPIのプログラミングモデルを見つけようとしています。これにより、許容できる値をより代表的なコマンドにすることができます。 GenderIdがnull可能であると言えば、私のAPIに付随する生成されたドキュメントは誤解を招きます。 – puri

関連する問題