Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Model binding to Dictionary from URI in ASP.NET Web API

Please refer to this link from MVC: http://aspnetwebstack.codeplex.com/discussions/351011

I am having trouble with model binding. From JavaScript I do an GET Ajax request to my API end point called "/api/products" passing in some parameters including paging and sorting as query parameters. Here is the complete URI:

http://localhost/api/products?page=1&count=10&filter[name]=Test1&filter[price]=10&sorting[name]=desc

On the server side, I have an Web API controller accepting these properties from the URI:

public async IHttpActionResult Get([FromUri]Dictionary<string,string> filter, [FromUri]Dictionary<string,string> sorting, int count, int page)
{
        //...
}

The "count" and "page" parameters bind perfectly fine, and the filter and sorting binds as an instance of a dictionary, but its count is 0.

I got this working in MVC but it doesn't seem to be doing the truck in Web API.

like image 954
Fanie Reynders Avatar asked Apr 08 '14 17:04

Fanie Reynders


1 Answers

You can still leverage out of the box default model binder and your uri would look like

http://localhost/api/products?page=1&count=10&filter[0].key=name&filter[0].value=Test1&filter[1].key=price&filter[0].value=10&sorting[0].key=name&sorting[0].value=desc
like image 97
Lakshmana Prabhu Venkatesan Avatar answered Sep 21 '22 00:09

Lakshmana Prabhu Venkatesan