Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在asp.net mvc中将对象列表从视图传递到控制器?_Asp.net_Asp.net Mvc - Fatal编程技术网

在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