Reputation: 13866
I seek your help for a Web API extension which could support model binding from Form Data say, FormDataAttribute
(hypothetical), or guidance from community on how to achieve it.
public class NammaApiController : ApiController
{
public IHttpActionResult PostFDFromBody([FromBody]FD reqBody)
{
return Ok();
}
public IHttpActionResult PostFDFromFormData([FromFormData]FD reqBody)
{
return Ok();
}
}
Default Web API model binder works only for raw input, unfortunately.
Upvotes: 1
Views: 6372
Reputation: 2653
I recently did a sort a like scenario, on your controller, use this method signature in your controller class
[HttpPost]
[Route("search")]
public IHttpActionResult Search(System.Net.Http.Formatting.FormDataCollection search)
Then create an extension method on the FormDataCollection class to convert this FormDataCollection to a NameValueCollection, easier later.
public static NameValueCollection Convert(this FormDataCollection formDataCollection)
{
IEnumerator<KeyValuePair<string, string>> pairs = formDataCollection.GetEnumerator();
NameValueCollection collection = new NameValueCollection();
while (pairs.MoveNext())
{
KeyValuePair<string, string> pair = pairs.Current;
collection.Add(pair.Key, pair.Value);
}
return collection;
}
Then you have a NameValueCollection
, and then in a class, create a constructor like:
public SearchQuery(NameValueCollection formdata) : base(formdata)
{
FirstName = formdata["FirstName"];
...
}
Upvotes: 1