如何将FormData读入Web API?

时间:2017-10-26 06:11:28

标签: c# asp.net-web-api asp.net-web-api2 model-binding

我寻求你的Web API扩展的帮助,它可以支持表单数据的模型绑定,FormDataAttribute(假设),或社区关于如何实现它的指导。

public class NammaApiController : ApiController
{
    public IHttpActionResult PostFDFromBody([FromBody]FD reqBody)
    {

        return Ok();
    }

    public IHttpActionResult PostFDFromFormData([FromFormData]FD reqBody)
    {

        return Ok();
    }
}

遗憾的是,默认Web API模型绑定器仅适用于原始输入。

enter image description here

1 个答案:

答案 0 :(得分:1)

我最近在您的控制器上做了类似的场景,在控制器类中使用此方法签名

 [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"];    
    ...
}