我有一个返回数组(string [])的方法,我试图将这个字符串数组传递给一个Action Link,这样它就会创建一个类似于的查询字符串:
/Controller/Action?str=val1&str=val2&str=val3...etc
但是当我传递新的{str = GetStringArray()}时,我得到以下网址:
/Controller/Action?str=System.String%5B%5D
所以基本上它采用我的字符串[]并在其上运行.ToString()来获取值.
有任何想法吗?谢谢!
尝试创建一个包含值的RouteValueDictionary.您必须为每个条目指定一个不同的密钥.
<% var rv = new RouteValueDictionary(); var strings = GetStringArray(); for (int i = 0; i < strings.Length; ++i) { rv["str[" + i + "]"] = strings[i]; } %> <%= Html.ActionLink( "Link", "Action", "Controller", rv, null ) %>
会给你一个像这样的链接
Link
编辑:MVC2更改了ValueProvider接口,使我原来的答案过时了.您应该使用带有字符串数组的模型作为属性.
public class Model { public string Str[] { get; set; } }
然后,模型绑定器将使用您在URL中传递的值填充模型.
public ActionResult Action( Model model ) { var str0 = model.Str[0]; }