2016-08-02 4 views
1

は、私はチェックを入れている:流暢な検証:悪い要求メッセージ形式をカスタマイズするには?私のコントローラで

if (!ModelState.IsValid) 
{ 
    return BadRequest(ModelState); 
} 

これは私にエラーを与え例えば、特定のフォーマットである:

{ 
    "Message": "The request is invalid.", 
    "ModelState": { 
    "stocks.SellerType": [ 
     "SellerType should be greater than 101" 
    ], 
    "stocks.SourceId": [ 
     "SourceId should be less than 300" 
    ] 
    } 
} 

どのように私は、このエラーメッセージの形式をカスタマイズすることができます。エラーメッセージをカスタマイズする方法、つまり「SourceIdは300未満でなければならない」ということを知っています。しかし、私はどのように私は "メッセージ"を変更したり、jsonフィールド "ModelState"を削除したり名前を変更することができますか?

+0

小さいModelStateを返すラッパーは問題ありませんか?例:メッセージ付きの独自のカスタムオブジェクト(および必要に応じて他のフィールド) – meorfi

+0

はい私自身のカスタムオブジェクトが必要です。 – maverick

+0

このエラーが発生している場所は、 'controller'ですか? –

答えて

1

更新:デフォルトのメッセージを変更し、あなたがHttpErrorクラスを使用することができますModelStateエラーのデフォルトのフォーマットを維持する:

if (!ModelState.IsValid) 
{ 
    return Content(HttpStatusCode.BadRequest, 
     new HttpError(ModelState, includeErrorDetail: true) 
     { 
      Message = "Custom mesage" 
     }); 
} 

それとも、(検証結果を独自のモデルを定義し、必要なステータスコードでそれを返すことができますjsonフィールドの名前を "ModelState"に変更します)。たとえば、

+0

こんにちは、それを試して、私はk__BackingFieldと醜いシリアル化を得た? {"エラーメッセージ": "エラーメッセージ": "エラーメッセージ": "エラーメッセージ": "エラーメッセージ": " " k__BackingField":null}}} –

+0

@LeszekRepie、そうです。これはステータスコード 'BadRequest'でカスタムレスポンスを返す方法の単なる例でした。更新された回答を参照 - 既定の書式が保持されます。 –

関連する問題