如何将FormData读入Web API?

问题描述 投票:1回答:1

我寻求你的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模型绑定器仅适用于原始输入。

enter image description here

c# asp.net-web-api asp.net-web-api2 model-binding
1个回答
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"];    
    ...
}
© www.soinside.com 2019 - 2024. All rights reserved.