如何将通用列表传递给Html.ActionLink(...)?

时间:2012-07-23 21:50:33

标签: asp.net-mvc asp.net-mvc-3

我有一个使用属性multiple =“multitple”的控件的表单。这允许用户在控件中选择多个项目。

使用get方法提交表单时,请求页面的url包含一个具有相同名称的多个参数。每个项目选择一个。例如,我可以得到这样的东西:

/logs?levels=DEBUG&levels=INFO&levels=FATAL

在我的控制器中,操作正确地接收类型为List的参数中的值,如下所示:

public ActionResult Index(List<String> levels)
{
   ...
}

现在,出于某种原因,我需要创建一个指向此操作的链接,该链接将包含levels参数的多个值。如何使用Html.ActionLink创建这样的链接?我这样试过:

@Html.ActionLink((p + 1).ToString(), "Index", new {
    levels = ViewBag.selectedLevels_AS_A_GENERIC_LIST_OF_STRINGS,
    itemsPerPage = ViewBag.itemsPerPage
});

它不起作用,因为列表不以任何方式展开,而是在其上调用.ToString()并将结果插入到链接中。当然,我无法创建一个具有名为“levels”的多重属性的对象。

如何创建一个ActionLink,就像我使用的表单生成的一样?

由于

1 个答案:

答案 0 :(得分:3)

这样的事情应该有效。

@Html.ActionLink((p + 1).ToString(), "Index", new RouteValueDictionary{
    {"levels[0]", selectedLevels_AS_A_GENERIC_LIST_OF_STRINGS[0]},
    {"levels[1]", selectedLevels_AS_A_GENERIC_LIST_OF_STRINGS[1]},
    {"itemsPerPage", ViewBag.itemsPerPage}
});