なぜ私たちはこのような振る舞いをするのでしょうか?
コントローラーのアクション:
public ActionResult TestProc(List<int> list)
{
return new ContentResult();
}
リクエスト:
/TestProc は null リストにつながります。わかった
/TestProc?list=[] は空のリストになります。わかった
/TestProc?list= は、1 つの項目 (0) を含むリストになります。OK ではありません。バインダーはクエリ文字列が存在することを認識していると仮定します。値がないため、リストにデフォルトの int 値をプッシュします。つまり、list= を list=0 と同じように扱います。これは紛らわしいと思います。list= は、このコンテキストではリストがまったくなくても同じであると考えていたので、リストが null であると予想していました。