在asp.net mvc中将对象列表从视图传递到控制器?
这可能吗?在asp.net mvc中将对象列表从视图传递到控制器?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,这可能吗? 我要做的是在actionlink中将对象列表作为参数传递 当我尝试这样做的时候,列表到达控制器时总是空的 在视图中 <%= Url.Action("ActionName", new { list = Model.ListOfObjects}) %> 在控制器中 public ActionResult ActionName(List<Object> list) { //Do stuff } public ActionRe
我要做的是在actionlink中将对象列表作为参数传递
当我尝试这样做的时候,列表到达控制器时总是空的 在视图中
<%= Url.Action("ActionName", new { list = Model.ListOfObjects}) %>
在控制器中
public ActionResult ActionName(List<Object> list)
{
//Do stuff
}
public ActionResult ActionName(列表)
{
//做事
}
虽然它可能会获取对象列表,但它可能不会呈现您希望看到的内容;它实际上可能会吸收list类的值(或该列表表示的任何类),并将其用作参数
不是通过get请求,除非手动写出参数并反序列化参数。或者,在表单中使用这些值回发到服务器;然后,这将正确填充
HTH.就是否可能而言——这是可能的,但不是你正在尝试的方式。请记住,这将转换为一个URL,该URL将被MVC解析,不同的参数将作为直接参数或通过模型绑定器传递给操作 我建议您尝试弄清楚URL必须是什么样子,然后可能执行一些自定义代码来生成URL(可能使用自定义帮助函数/扩展方法)。如果您将其与自定义模型绑定器相结合,您应该有一个非常优雅的解决方案,它完全满足您的需要 例如,如果您的列表有3个string类型的对象,您可以编写一个帮助器来生成这样的url(假设列表包含“第一”、“第二”和“第三”) /控制器/动作?obj1=第一个,obj2=第二个,obj3=第三个
现在,您只需编写一个模型绑定器,查找名为“obj1”、“obj2”等的条目,并将结果添加到列表中即可。类似的方法可以奏效,如果您在很多地方需要,我建议制作一个帮助器来包含此逻辑
<% var values = new RouteValueDictionary();
for (int i = 0; i < Model.ListOfObjects.Count -1; i++)
{
values.Add("list["+i+"]", Model.ListOfObjects[i]);
}%>
<%= Url.Action("ActionName", values); %>
操作将知道如何处理控制器中的列表。/controller/Object?list=System.Collections.Generic.list%601%5BObject%5D应该是/controller/ActionName?list=System.Collections.Generic.list%601%5BObject%5D