JsonPropertyを使用して名前を上書きするモデルがいくつかありますが、ModelStateで検証エラーが発生すると問題が発生します。例:ModelState.Errorsで[JsonProperty( "name")]を使用する
class MyModel
{
[JsonProperty("id")]
[Required]
public string MyModelId {get;set;}
}
class MyModelController
{
public IHttpActionResult Post([FromBody] MyModel model)
{
if (!ModelState.IsValid)
{
return HttpBadRequest(ModelState);
}
/* etc... */
}
}
上記の投稿は、正確ではないエラーThe MyModelId field is required.
を返します。私たちはこれをThe id field is required.
と言いたいと思います。 [DataMember(Name="id")]
を使用しようとしましたが、同じ結果が得られます。
質問1: [必須]属性ごとに独自のエラーメッセージを提供する以外に、ModelStateエラーでC#プロパティ名ではなくJSONプロパティ名を表示する方法はありますか?
- 更新 -
私はこれで遊んでとカスタムプロパティ名を使用して、エラーメッセージを再作成するため、「日曜大工」方法を見つけてきました。私は実際にこれを行うには、組み込みの方法があります望んでいるが、これは仕事をしているようだ...
https://gist.github.com/Blackbaud-JasonTremper/b64dc6ddb460afa1698daa6d075857e4
質問2:ModelState.Keyは<parameterName>.<reflectedProperty>
構文と一致すると仮定することができますこれが真実でないかもしれない場合がありますか?
質問3:JSONのパラメータ名があることではなく、[DataMember]
または[JsonProperty]
属性に反射を経由して検索することが期待されているかを決定する簡単な方法はありますか?
を。しかし、あなたがリンクしていることによると、[表示]プロパティは仕事をしました(多分それはあなたが意味するものです)。ありがとう! – jt000