我寻求你的Web API扩展的帮助,它可以支持来自Form Data的模型绑定,例如FormDataAttribute
(假设),或社区关于如何实现它的指导。
public class NammaApiController : ApiController
{
public IHttpActionResult PostFDFromBody([FromBody]FD reqBody)
{
return Ok();
}
public IHttpActionResult PostFDFromFormData([FromFormData]FD reqBody)
{
return Ok();
}
}
不幸的是,默认Web API模型绑定器仅适用于原始输入。
我最近在你的控制器上做了一个类似的场景,在你的控制器类中使用这个方法签名
[HttpPost]
[Route("search")]
public IHttpActionResult Search(System.Net.Http.Formatting.FormDataCollection search)
然后在FormDataCollection类上创建一个扩展方法,将此FormDataCollection转换为NameValueCollection,以后更容易。
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;
}
然后你有一个NameValueCollection
,然后在一个类中,创建一个构造函数,如:
public SearchQuery(NameValueCollection formdata) : base(formdata)
{
FirstName = formdata["FirstName"];
...
}