在ASP.NET MVC 2中,我可以使用默认的ModelBinder将查询字符串反序列化为数组吗?

Dan*_* T. 4 c# url asp.net-mvc modelbinders asp.net-mvc-2

在ASP.NET MVC 2中,您可以使用此URL和此控制器方法:

GET http://server/controller/get?id=5

public ActionResult Get(int id)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

ModelBinder会将id=5查询字符串转换id = (int) 5为方法参数.但是,这不起作用:

GET http://server/controller/get?idlist=1,2,3,4,5

public ActionResult Get(int[] idlist)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

idlist参数中将为null.虽然对此进行解析非常简单,但我想知道是否有办法更改方法签名或查询字符串以使默认的ModelBinder自动反序列化数组/集合?

Den*_*s C 8

使用默认的模型绑定器,URL应该是

http://server/controller/get?idlist=1&idlist=2&idlist=3&idlist=4&idlist=5
Run Code Online (Sandbox Code Playgroud)

要么

http://server/controller/get?idlist[]=1&idlist[]=2&idlist[]=3&idlist[]=4&idlist[]=5
Run Code Online (Sandbox Code Playgroud)

如果你真的想使用idlist = 1,2,3,4,5,你应该拥有自己的活页夹

  • 默认的模型绑定器不支持第二个示例. (2认同)