Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.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
C# 将IEnumerable添加到RouteValueDictionary-这可能吗?_C#_Asp.net_Asp.net Mvc 3_Asp.net Mvc 2 - Fatal编程技术网

C# 将IEnumerable添加到RouteValueDictionary-这可能吗?

C# 将IEnumerable添加到RouteValueDictionary-这可能吗?,c#,asp.net,asp.net-mvc-3,asp.net-mvc-2,C#,Asp.net,Asp.net Mvc 3,Asp.net Mvc 2,我正在使用ASP.NETMVC2,我有一个小问题。我需要从一个值列表中生成一个url 使用以下代码: RouteValueDictionary dic = new RouteValueDictionary(); dic.Add("mylist", new [] { 1, 2, 3 }); return helper.Action(dic["action"] as string, dic["controller"] as string, dic); 我得到了url/whatever/System

我正在使用ASP.NETMVC2,我有一个小问题。我需要从一个值列表中生成一个url

使用以下代码:

RouteValueDictionary dic = new RouteValueDictionary();
dic.Add("mylist", new [] { 1, 2, 3 });
return helper.Action(dic["action"] as string, dic["controller"] as string, dic);
我得到了url
/whatever/System.Int32[]
,这显然不是我想要的

ASP.NETMVC2生成这样一个URL的首选方式是什么?我知道modelbinder可以处理列表,但是如何生成它呢


如果在MVC 3中使用不同的方法,请快速说明如何使用它。

请查看之前的回答是否对您有所帮助(MVC 3与asp.net 4中的路由引擎相同)


您可以使用
ToString()
覆盖来创建自己的列表类,该覆盖会按您的意愿打印列表。这似乎是最简单(但可能是最“黑客”)的方法

public MyRouteList<T> : List<T>
{
     public override string ToString()
     {
          return string.Join("&", this.Select(x => "list=" + x.ToString()));
     }
}
公共MyRouteList:列表
{
公共重写字符串ToString()
{
返回字符串.Join(&),this.Select(x=>“list=“+x.ToString());
}
}

您希望您的URL与此列表的外观如何?/which?列表[0]=1和列表[1]=2可以与默认的modelbinder一起使用,但对于这种情况,更漂亮的可能是列表=1和列表=2和列表=3。在任何情况下,使用默认模型绑定器和默认URL生成器的任何内容都可能是Ah的副本。我的大脑是通过ICaffeine界面直接连接到谷歌的,哈哈