使用对象列表的 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
你可以做到;然而,您需要通过查询字符串以不同方式传递值:
您需要将值作为列表本身的名称传递。
所以我想知道我是否遗漏了什么,或者 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
你可以做到;然而,您需要通过查询字符串以不同方式传递值:
您需要将值作为列表本身的名称传递。