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

发布于 2024-10-07 05:09:14 字数 470 浏览 7 评论 0原文

在 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 自动反序列化数组/集合?

In ASP.NET MVC 2, you can use this URL and this controller method:

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

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

And the ModelBinder will convert the id=5 querystring to id = (int) 5 in the method parameter. However, this won't work:

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

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

idlist will be null in the parameter. Although the parsing for this is pretty trivial, I was wondering if there is a way to either change the method signature or the querystring in order to make the default ModelBinder automatically deserialize arrays/collections?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぶ宁プ宁ぶ 2024-10-14 05:09:14

使用默认的 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,你应该有自己的活页夹

With the default modelbinder, the url should be

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

or

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

If you really want to use idlist=1,2,3,4,5, you should have your own binder

や莫失莫忘 2024-10-14 05:09:14

这就是我的想法:

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

应该用作

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

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

Here's what I think:

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

Should be used as

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

And the idlist can be simply split by comma(,)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文