0

ASP.NET MVC 4 を使用して、JSON 構造を受け入れるコントローラーを作成しました。

public class SomeDto {
    ...
    public Boolean IsUnicornAlive { get; set; }
    ...
}

[HttpPost]      
public ActionResult DoSomething(SomeDto dto) {
...
}

この POST リクエストがContent-Type を指定せずに受信された場合:

{
...
"IsUnicornAlive":true
...
}

アクションは引き続き呼び出されますが、IsUnicornAlive プロパティは false になります。基本的に、これはリクエストを作成した側の問題ですが、ASP がそれを黙って処理せず、デフォルト値でアクションを呼び出さないことを期待します。この場合の最も適切な処理は、4xx エラー、理想的には 415 です。それを実装する最も簡単な方法は何ですか?または、コントローラ アクション内でデフォルト値が使用されたことを知る方法はありますか?

注: この質問は、この問題がない ASP.NET WebApi に関するものではありません。これは特にMVCに関するものです。

4

2 に答える 2

0

SomeDTO 用のカスタム ModelBinder を用意し、受信データを自分で解析して、値を推測するかどうか、モデル状態エラーを追加するかどうかを決定するのはどうですか?

于 2013-05-23T13:59:51.970 に答える
0

Controller の ModelState プロパティを見てください。たとえば、デフォルト値が使用された場合は ModelState.Keys.Count == 0 ですが、そのオブジェクトでさらに優れたものを見つけることができます。

于 2013-05-23T16:11:37.240 に答える