webapi post html,如何在WebAPI中获取POST数据?

今天花了很多时间试图把我的大脑围绕在处理Web表单数据的旧方式和如何用WebAPI完成之间的(重要但强大的)范式转换之后,我想我会把2美分添加到这个讨论。

我想做什么(这对于POST的Web表单处理来说很常见)就是能够以任何顺序获取我想要的任何表单值。 像你可以做,如果你有你的数据在System.Collections.Specialized.NameValueCollection 。 但事实certificate,在WebAPI中,来自POST的数据以stream的forms返回给您。 所以你不能直接做到这一点。

但是有一个叫FormDataCollection (在System.Net.Http.Formatting中)的很酷的小类,它可以让你做一次遍历你的集合。

所以我写了一个简单的实用程序方法,它将通过FormDataCollection运行一次并将所有值粘贴到NameValueCollection 。 一旦完成,您可以将所有数据跳到您的内容。

所以在我的ApiController派生类中,我有一个像这样的post方法:

public void Post(FormDataCollection formData) { NameValueCollection valueMap = WebAPIUtils.Convert(formData); ... my code that uses the data in the NameValueCollection }

我的静态WebAPIUtils类中的Convert方法如下所示:

/// /// Copy the values contained in the given FormDataCollection into /// a NameValueCollection instance. /// /// The FormDataCollection instance. (required, but can be empty) /// The NameValueCollection. Never returned null, but may be empty. public static NameValueCollection Convert(FormDataCollection formDataCollection) { Validate.IsNotNull("formDataCollection", formDataCollection); IEnumerator> pairs = formDataCollection.GetEnumerator(); NameValueCollection collection = new NameValueCollection(); while (pairs.MoveNext()) { KeyValuePair pair = pairs.Current; collection.Add(pair.Key, pair.Value); } return collection; }

希望这可以帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值