在ASP.NET MVC 2中,我可以使用默认的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}传递,然后绑定器将它绑定到数组,例如
这就是我的想法:
public ActionResult Get(int id) { ... }
应该用作
GET http://server/controller/get/5
idlist可以简单地用逗号分隔(,)
- RedirectToAction和RedirectToRoute
- 如何获取ASP.NET应用程序路径?
- MVC 3模型validation问题 – 监督或设计
- OAuthWebSecurity与Facebook未按预期使用电子邮件权限
- 具有键’GenderID’的ViewData项的类型为’System.Int32’,但必须是’IEnumerable ‘类型
- 在MVC 5 Dot Net Identity中扩展IdentityUserRole后,UserManager.GetRoles不起作用
- C#如何在使用asp.net mvc时设置autopostback属性?
- @ Html.DisplayText实际上不会显示文本
- 如何在ASP.NET MVC页面中声明全局变量