【问题标题】:asp.net web api - model binding list parameterasp.net web api - 模型绑定列表参数
【发布时间】:2014-05-29 20:56:13
【问题描述】:

在我的控制器中,我有:

[AcceptVerbs("GET", "POST")]
    public List<BuzzMonitor.Web.Message> Search(string text, DateTime dateFrom, DateTime dateTo, List<int> themeIds, List<int> sourceIds) 
    {...}

我想做模型绑定。原始类型很容易,但是当我有原始类型列表时该怎么办?

我在 Global.asax 中是这样做的:

 GlobalConfiguration.Configuration.Routes.MapHttpRoute("SearchWithParameters", "api/{controller}/{action}/{text}/{dateFrom}/{dateTo}/?/?"

但我不知道为列表设置什么...

我在某个网站上发现我可以在列表之前添加 [ModelBinder],但是当我这样做时,我只会在那个词上加上红色下划线。

有人知道怎么做吗?

【问题讨论】:

  • 感谢@SpaceBison 的精彩编辑
  • 哦,我很着急!感谢您的编辑! @SpaceBison 但有人知道如何解决吗?

标签: c# asp.net model-binding asp.net-web-api


【解决方案1】:

根据您的描述,您似乎找到了这篇文章或类似文章

http://lostechies.com/keithdahlby/2012/10/04/asp-net-web-api-list-parameter-binding/

建议您使用 ModelBinder 属性。如果你能让它工作,我仍然推荐这种方式。您描述的红色下划线听起来您可能没有适当的参考。请确保您的类中有适当的引用来访问该属性,在这种情况下,它看起来像 System.Web.Http.ModelBinding

http://msdn.microsoft.com/en-us/library/system.web.http.modelbinding.modelbinderattribute(v=vs.118).aspx

如果失败,您可能无法使用模型绑定。从第一篇开始

Web API only uses model binding for “simple types”

您也可以考虑使用 JSON Formatter 或类似的工具,这并不困难,并且很容易支持 List 结构,以及格式良好的 JSON。

这是一篇很棒的介绍性文章

http://www.hanselman.com/blog/OneASPNETMakingJSONWebAPIsWithASPNETMVC4BetaAndASPNETWebAPI.aspx

【讨论】:

  • 我现在试试,我没有下划线了 :D 我在 GLobal.asax 中仍然有问题,因为我不确定如何编写列表参数。如果我这样做:GlobalConfiguration.Configuration.Routes.MapHttpRoute("SearchWithParameters", "api/{controller}/{action}/{text}/{dateFrom}/{dateTo}/[themeIds]/[sourceIds]",我仍然不确定如何在浏览器中测试它。我尝试了这种格式http://localhost:51041/api/Values/Search/buzz/2014-05-29/2014-05-30/[1,2]/[2,3],但出现 404 错误。现在问题可能出在 Global.asax 或浏览器查询中,或两者兼而有之。您对此有所了解吗?
  • 哦,我的错!我用最简单的方法解决!我输入:GlobalConfiguration.Configuration.Routes.MapHttpRoute("SearchWithParameters", "api/{controller}/{action}/{text}/{dateFrom}/{dateTo}/{themeIds}/{sourceIds}" 和简单的查询:http://localhost:51041/api/Values/Search/buzz/2014-05-29/2014-05-30/1/2 它通过了!感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 2016-08-16
  • 2014-12-23
  • 2013-07-08
相关资源
最近更新 更多