我有一个返回数组 (string[]) 的方法,并且我尝试将此字符串数组传递到操作链接中,以便它将创建一个类似于以下内容的查询字符串:
/Controller/Action?str=val1&str=val2&str=val3...etc
但是当我传递 new { str = GetStringArray() } 时,我得到以下网址:
/Controller/Action?str=System.String%5B%5D
所以基本上它是采用我的 string[] 并在其上运行 .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 ) %>
会给你一个像这样的链接
<a href='/Controller/Action?str=val0&str=val1&...'>Link</a>
EDIT:MVC2 更改了 ValueProvider 接口,使我原来的答案变得过时。您应该使用具有字符串数组作为属性的模型。
public class Model
{
public string Str[] { get; set; }
}
然后模型绑定器将使用您在 URL 中传递的值填充您的模型。
public ActionResult Action( Model model )
{
var str0 = model.Str[0];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)