I am expecting a POST request with content type set to:
Content-Type: application/x-www-form-urlencoded
Request body looks like this:
first_name=john&last_name=banana
My action on controller has this signature:
[HttpPost]
public HttpResponseMessage Save(Actor actor)
{
....
}
Where Actor class is given as:
public class Actor
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
Is there a way to force Web API to bind:
first_name => FirstName
last_name => LastName
I know how to do it with requests with content type set to application/json, but not with urlencoded.
It's an old post but maybe this could helps other people. Here is a solution with an
AliasAttribute
and the associatedModelBinder
It could be used like this :
Don't hesitate to comment my code :)
Every Idea / comment is welcome.
I'm 98% certain (I looked the source code) that WebAPI doesn't support it.
If you really need to support different property names, you can either:
Add additional properties to the
Actor
class which serves as alias.Create your own model binder.
Here is a simple model binder:
If you are up for the challenge, you can try to create a generic model binder.