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

Mal*_*iko 4 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) 
    {...}
Run Code Online (Sandbox Code Playgroud)

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

我在Global.asax中这样做了:

 GlobalConfiguration.Configuration.Routes.MapHttpRoute("SearchWithParameters", "api/{controller}/{action}/{text}/{dateFrom}/{dateTo}/?/?"
Run Code Online (Sandbox Code Playgroud)

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

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

有谁知道怎么做?

Mab*_*lah 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或类似的东西,这并不困难,并且可以轻松支持具有格式良好的JSON的List结构.

这是一篇很好的介绍性文章来使用它

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