C# 将IEnumerable添加到RouteValueDictionary-这可能吗?
我正在使用ASP.NETMVC2,我有一个小问题。我需要从一个值列表中生成一个url 使用以下代码: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
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界面直接连接到谷歌的,哈哈