2016-04-30 4 views
0

を作るモデルバインダー:</p> <pre><code>public async Task<IActionResult> Post([FromBody]Model model) { } </code></pre> <p>モデルは以下の通りです:プロパティに無効な値が、私は、次のASP.NETコア・コントローラのアクションしているモデルのヌル

public class Model { 
    public String Name { get; set; } 
    public Int32? Age { get; set; } 
} 

私はその後、角度使用して、無効なモデルを投稿しようとしました:

model = { name: "John", age: "Ab } 

私のコントローラでモデルはnullになります。 age: 30を使用する場合、モデルには値が定義されています。

年齢に無効な値がある場合、モデルを定義してAgeにInt32があるべきではないでしょうか?デフォルト値(nullなど)?

答えて

1

これは予想される動作です。 Int32? Ageは無効な値ではなくNULL値を受け入れます。無効な年齢値を持つ投稿されたモデルは、値をインターガーに変換しようとしますが、値はインターガーではないため失敗します。次のJSONで

は:{ name: "John", age: "Ab }にModelStateは、2つのエラーが含まれます。正しい文字列値を与える

Unterminated string. Expected delimiter: \ 
Unexpected end when deserializing object 

{ name: "John", age: "test"}にModelStateは1つのエラー含まれています

Could not convert string to integer: test 
+0

はい、同意しますが、なぜモデルはnullを作りますそれが起こるとき?なぜプロパティだけでなく、他のプロパティを定義したままにしますか? –

+0

jsonはモデルに変換できません。単にjsonがモデルに対して有効でないためです。したがって、デシリアライズがない部分はありません。完全には失敗します。 –

関連する問題