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

时间:2011-08-16 18:21:48

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

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

使用以下代码:

RouteValueDictionary dic = new RouteValueDictionary();
dic.Add("mylist", new [] { 1, 2, 3 });
return helper.Action(dic["action"] as string, dic["controller"] as string, dic);

我得到的网址/whatever/System.Int32[]显然不是我所追求的。

什么是ASP.Net MVC 2生成此类URL的首选方式?我知道modelbinder可以处理列表,但是如何生成它?

关于如何在MVC 3中完成的快速说明也将受到赞赏(如果方法不同)。

2 个答案:

答案 0 :(得分:1)

看看这个先前的响应是否对你有帮助(mvc 3将是相同的 - 它与asp.net 4中的路由引擎相同)

ASP.NET MVC - Pass array object as a route value within Html.ActionLink(...)

答案 1 :(得分:0)

您总是可以使用ToString()覆盖创建自己的List类,以打印您希望的方式。这似乎是最简单的(但也许是最“hackish”)方式。

public MyRouteList<T> : List<T>
{
     public override string ToString()
     {
          return string.Join("&", this.Select(x => "list=" + x.ToString()));
     }
}