List <int>参数默认绑定来自url参数behavour </int>

时间:2012-07-05 00:22:53

标签: asp.net-mvc-3

为什么我们有这种行为?

控制器操作:

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

请求:

/ TestProc   导致空列表。行

/ TestProc?列表= []   导致一个空列表。行

/ TestProc?列表=    导致列表中包含一个项目,0。不行。我假设绑定器看到查询字符串存在,它没有值因此它在列表中推送默认的int值,即它将list =视为与list = 0相同。我发现这令人困惑。我本以为list =是相同的,在这个上下文中根本没有列表,我希望列表为null。

1 个答案:

答案 0 :(得分:0)

  

我发现这令人困惑

我同意。在这种情况下,您可以使用可以为空的整数:

public ActionResult TestProc(List<int?> list)

这次模型绑定器将推送一个null的元素,如果必须,您将能够在/TestProc?list=/TestProc?list=0之间消除歧义。