在我的控制器中,我有:
[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],但是当我这样做时,我会在该单词上添加红色下划线。
有没有人知道该怎么做?
答案 0 :(得分:5)
根据您的描述,您似乎找到了这篇文章或类似的文章
http://lostechies.com/keithdahlby/2012/10/04/asp-net-web-api-list-parameter-binding/
建议您使用ModelBinder属性。如果你能让它发挥作用,我仍然会推荐这种方式。您描述的红色下划线听起来可能没有适当的参考。请确保您的类中有适当的引用来访问该属性,在这种情况下,它看起来像 System.Web.Http.ModelBinding
如果失败,您可能无法使用模型绑定。从第一篇文章
Web API only uses model binding for “simple types”
你也可以看看使用JSON Formatter或类似的东西,这并不困难,并且很容易支持List结构,格式化的JSON很好。
这是一篇使用此
的精彩介绍性文章http://www.hanselman.com/blog/OneASPNETMakingJSONWebAPIsWithASPNETMVC4BetaAndASPNETWebAPI.aspx