【问题标题】:How can I pass a Generic List to Html.ActionLink(...)?如何将通用列表传递给 Html.ActionLink(...)?
【发布时间】:2012-07-23 21:50:33
【问题描述】:

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

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

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

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

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() 并将结果插入到链接中。当然,我也无法创建具有多个名为“levels”的属性的对象。

如何创建类似于我使用的表单生成的 ActionLink?

谢谢

【问题讨论】:

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


    【解决方案1】:

    这样的事情应该可以工作。

    @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}
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-28
      • 2021-07-16
      相关资源
      最近更新 更多