c# - 如何将 Url.Action 与列表参数一起使用?

标签 c# asp.net-mvc asp.net-mvc-5

假设我有一个 Action 方法:

[HttpGet]
public ActionResult Search(List<int> category){
    ...
}

MVC 模型绑定(bind)的工作方式,它需要一个像这样的类别列表:

/search?category=1&category=2

所以我的问题是:

如果我只是硬编码,如何使用 Url.Action() 创建该链接?

Url.Action("Search", new {category=???}) //Expect: /search?category=1&category=2

如果我的输入是一个 int 列表,我如何使用 Url.Action() 创建该链接?

var categories = new List<int>(){1,2}; //Expect: /search?category=1&category=2

Url.Action("Search", new {category=categories}) //does not work, 

最佳答案

不使用匿名类型,而是构建一个 RouteValueDictionary。将参数格式化为 parameter[index]

@{
    var categories = new List<int>() { 6, 7 };

    var parameters = new RouteValueDictionary();

    for (int i = 0; i < categories.Count; ++i)
    {
        parameters.Add("category[" + i + "]", categories[i]);
    }
}

然后,

@Url.Action("Test", parameters)

关于c# - 如何将 Url.Action 与列表参数一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21785424/

相关文章:

c# - RedirectToAction 开始新 session

c# - 将 View 与viewmodel连接以共享ObservableCollection

asp.net - 如何部署和保护 ASP.NET Web 应用程序以供内部和外部用户使用?

asp.net-mvc - 如何在 HtmlHelper 中获取当前路线?

c# - 返回 MVC 中的倒数第二个 URL(返回应用了先前过滤条件的 View )?

asp.net-mvc - 如何在 MVC 5 中的用户身份中使用角色

c# - WebGrid MVC 5 – 显示基于身份验证和授权的操作按钮

c# - 流利的断言 : How to break through drill-down of Which/And cascades?

c# - 无法将 XML 反序列化为 C# 对象,我做错了什么?

ASP.NET MVC 身份数据库