使用对象列表的 MVC 控制器参数。奇怪的行为

MVC Controller Param using list of objects. Odd behaviour

所以我想知道我是否遗漏了什么,或者 MVC 是否可以做到这一点。 假设我有这个 class:

public class Stuff
{
    public string Thing1 { get; set; }
    public string Thing2 { get; set; }
    public string Thing3 { get; set; }
}

这在我的控制器中是这样使用的:

private ActionResult Something(List<Stuff> stuff)...

现在我执行这个 link:
怎么会这样 .../#Tester/Something?Thing1=hello&Thing2=world&Thing3=WachuUpTo
url 参数未绑定到控制器项目列表。但是,如果我将 class 重新配置为如下所示:

public class Stuff
{
    public List<string> Thing1 { get; set; }
    public List<string> Thing2 { get; set; }
    public List<string> Thing3 { get; set; }
}

然后将控制器参数设为单个对象:

private ActionResult Something(Stuff stuff)...

有效。 Thing1、Thing2、Thing3 在列表中各有一个元素,每个元素都具有正确的值。现在为什么这种方式行得通而另一种不行呢?
我更喜欢第一种方法,因为它更简单,因为我不必担心添加逻辑来确保每个子列表中的元素数量相同。 使用 MVC 3 顺便说一句。如果可能的话,我也在尝试使用 url 参数来做到这一点。

解法:
将 url 设为:/#Tester/Something?[0].Thing1=hello&[0].Thing2=world&[0].Thing3=WachuUpTo

你可以做到;然而,您需要通过查询字符串以不同方式传递值:

See here

您需要将值作为列表本身的名称传递。