繁体   English   中英

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

[英]In ASP.NET MVC 2, can I deserialize a querystring into an array using the default ModelBinder?

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

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

public ActionResult Get(int id)
{
    ...
}

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

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

public ActionResult Get(int[] idlist)
{
    ...
}

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

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

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

要么

http://server/controller/get?idlist[]=1&idlist[]=2&idlist[]=3&idlist[]=4&idlist[]=5

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

这对派对来说有点晚了,但我想做同样的事情。

您可以将单个字符串作为{1,2}传递,然后绑定器将它绑定到数组,例如

<input name="idlist" type="text" value="{163,162}">

这就是我的想法:

public ActionResult Get(int id)
{
   ...
}

应该用作

GET http://server/controller/get/5

idlist可以简单地用逗号分隔(,)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM