Binding Parameters
The discussion above about “body values” and “non-body values” leads us to discuss Formatters and Model Binders, since those two classes are responsible for handling bodies and non-body values, respectively. When you write an action method signature and include parameters, complex types come from “the body,” which really means that formatters are responsible for generating them; simple types, on the other handle, come from “not the body,” which means that model binders are responsible for generating them. For body content being sent, we use formatters to decode the data.
To tell the whole story, though, we need to rise up a level into a concept that is new to Web API: Parameter Binding. Web API uses parameter binders to determine how to provide values for individual parameters. Attributes can be used to influence that decision (like [ModelBinder], an attribute we've seen before with MVC), but the default logic uses the simple type vs. complex type logic when there are no overrides applied to influence the binding decision.
The parameter binding system looks to the action's parameters to find any attributes which derive from ParameterBindingAttribute. There are a few such attributes built into Web API, as shown in Table 11.1. In addition, you can register custom parameter binders which do not use model binding or formatters, either by registering them in the configuration or by writing your own ParameterBindingAttribute-based attributes.
Get Professional ASP.NET MVC 4 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.