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

时间:2015-07-24 18:04:20

标签: c# asp.net-mvc-3

所以我想知道我是否在这里遗漏了一些东西,或者MVC是否可以做到这一点。 说我有这个课程:

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

这在我的控制器中使用如下:

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

现在我怎么执行这个链接:
... /#测试仪/东西Thing1 =你好&放大器; Thing2 =世界和放大器; Thing3 = WachuUpTo
url params不会绑定到控制器项目列表。但是,如果我重新配置我的课程看起来像这样:

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 params。

解决方案:
把网址设为:/#Tester / Something?[0] .Thing1 = hello&amp; [0] .Thing2 = world&amp; [0] .Thing3 = WachuUpTo

1 个答案:

答案 0 :(得分:2)

你可以这样做;但是你需要通过查询字符串传递值有点不同:

See here

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