Если у меня есть действие, подобное этому:
public ActionResult DoStuff(List<string> stuff)
{
...
ViewData["stuff"] = stuff;
...
return View();
}
Я могу указать его по следующему URL:
http://mymvcapp.com/controller/DoStuff?stuff=hello&stuff=world&stuff=foo&stuff=bar
Но в моей ViewPage у меня есть этот код:
<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = ViewData["stuff"] }, null) %>
К сожалению, MVC недостаточно умен, чтобы распознать, что действие принимает массив, и развертывает список, чтобы сформировать правильный URL-маршрут.вместо этого он просто выполняет .ToString () для объекта, который просто перечисляет тип данных в случае List.
Есть ли способ получить Html.ActionLink для генерации правильного URL, когда один из назначенияПараметры действия - это массив или список?
- edit -
Как указал Джош ниже, ViewData ["stuff"] - это просто объект.Я попытался упростить проблему, но вместо этого вызвал не связанную ошибку!Я на самом деле использую выделенную ViewPage , поэтому у меня есть тесно связанная с типом модель.ActionLink на самом деле выглядит так:
<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = ViewData.Model.Stuff }, null) %>
Где ViewData.Model.Stuff печатается в виде списка