ASP.Net MVC RouteData e matrizes
Se eu tiver uma ação como esta:
public ActionResult DoStuff(List<string> stuff)
{
...
ViewData["stuff"] = stuff;
...
return View();
}
Eu posso bater com o seguinte URL:
http://mymvcapp.com/controller/DoStuff?stuff=hello&stuff=world&stuff=foo&stuff=bar
Mas no meu ViewPage, eu tenho esse código:
<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = ViewData["stuff"] }, null) %>
Infelizmente, o MVC não é inteligente o suficiente para reconhecer que a ação toma uma matriz e desenrola a lista para formar a rota de URL adequada. em vez disso, apenas faz um .ToString () no objeto que apenas lista o tipo de dados no caso de uma List.
Existe uma maneira de obter o Html.ActionLink para gerar uma URL apropriada quando um dos parâmetros da Ação de destino é uma matriz ou lista?
- editar -
Como Josh apontou abaixo, ViewData ["stuff"] é apenas um objeto. Eu tentei simplificar o problema mas, em vez disso, causei um erro não relacionado! Na verdade, estou usando um ViewPage <T> dedicado, por isso tenho um Modelo ciente de tipo fortemente acoplado. O ActionLink realmente se parece com:
<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = ViewData.Model.Stuff }, null) %>
Onde ViewData.Model.Stuff é digitado como uma lista