为什么我们有这种行为?
控制器操作:
public ActionResult TestProc(List<int> list)
{
return new ContentResult();
}
请求:
/ TestProc 导致空列表。行
/ TestProc?列表= [] 导致一个空列表。行
/ TestProc?列表= 导致列表中包含一个项目,0。不行。我假设绑定器看到查询字符串存在,它没有值因此它在列表中推送默认的int值,即它将list =视为与list = 0相同。我发现这令人困惑。我本以为list =是相同的,在这个上下文中根本没有列表,我希望列表为null。
答案 0 :(得分:0)
我发现这令人困惑
我同意。在这种情况下,您可以使用可以为空的整数:
public ActionResult TestProc(List<int?> list)
这次模型绑定器将推送一个null
的元素,如果必须,您将能够在/TestProc?list=
和/TestProc?list=0
之间消除歧义。