asp.net web api - 模型绑定列表参数

时间:2014-05-29 12:40:57

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

在我的控制器中,我有:

[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],但是当我这样做时,我会在该单词上添加红色下划线。

有没有人知道该怎么做?

1 个答案:

答案 0 :(得分:5)

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

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