39 arrays asp.net-mvc routes actionlink
我有一个返回数组(string [])的方法,我试图将这个字符串数组传递给一个Action Link,这样它就会创建一个类似于的查询字符串:
/Controller/Action?str=val1&str=val2&str=val3...etc
Run Code Online (Sandbox Code Playgroud)
但是当我传递新的{str = GetStringArray()}时,我得到以下网址:
/Controller/Action?str=System.String%5B%5D
Run Code Online (Sandbox Code Playgroud)
所以基本上它采用我的字符串[]并在其上运行.ToString()来获取值.
有任何想法吗?谢谢!
tva*_*son 13
尝试创建一个包含值的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 ) %>
Run Code Online (Sandbox Code Playgroud)
会给你一个像这样的链接
<a href='/Controller/Action?str=val0&str=val1&...'>Link</a>
Run Code Online (Sandbox Code Playgroud)
编辑:MVC2更改了ValueProvider接口,使我原来的答案过时了.您应该使用带有字符串数组的模型作为属性.
public class Model
{
public string Str[] { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,模型绑定器将使用您在URL中传递的值填充模型.
public ActionResult Action( Model model )
{
var str0 = model.Str[0];
}
Run Code Online (Sandbox Code Playgroud)
Gre*_*ean -7
我会使用 POST 来存储数组。除了丑陋和滥用 GET 之外,您还面临着耗尽 URL 空间的风险(信不信由你)。
假设限制为 2000 字节。查询字符串开销 (&str=) 将实际数据减少到约 300 字节(假设 url 的其余部分为 0 字节)。
归档时间: |
|
查看次数: |
30300 次 |
最近记录: |