假设我有一个 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/