4

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

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

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

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

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

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

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

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

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

谢谢

4

1 回答 1

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}
});
于 2012-07-23T21:57:22.570 回答