Если у меня есть такое действие:
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-адрес, когда одним из параметров целевого действия является массив или список?
-- редактировать --
Как указал ниже Джош, ViewData ["материал"] - это просто объект. Я попытался упростить проблему, но вместо этого вызвал несвязанную ошибку! На самом деле я использую специальный ViewPage ‹T›, так что у меня есть тесно связанная модель с поддержкой типов. ActionLink на самом деле выглядит так:
<%= Html.ActionLink("click here", "DoMoreStuff", "MoreStuffController", new { stuff = ViewData.Model.Stuff }, null) %>
Где ViewData.Model.Stuff набирается как список