1

なぜ私たちはこのような振る舞いをするのでしょうか?

コントローラーのアクション:

public ActionResult TestProc(List<int> list)
{
  return new ContentResult();
}

リクエスト:

/TestProc は null リストにつながります。わかった

/TestProc?list=[] は空のリストになります。わかった

/TestProc?list= は、1 つの項目 (0) を含むリストになります。OK ではありません。バインダーはクエリ文字列が存在することを認識していると仮定します。値がないため、リストにデフォルトの int 値をプッシュします。つまり、list= を list=0 と同じように扱います。これは紛らわしいと思います。list= は、このコンテキストではリストがまったくなくても同じであると考えていたので、リストが null であると予想していました。

4

1 に答える 1

0

これは紛らわしいと思います

同意します。この状況では、null 許容整数を使用できます。

public ActionResult TestProc(List<int?> list)

今回は、モデル バインダーが 1 つの要素をプッシュし、必要に応じてとnullを明確にすることができます。/TestProc?list=/TestProc?list=0

于 2012-07-05T05:45:26.227 に答える