在ASP.NET MVC中,可以访问表单发布数据:
var thisData = Request.Form["this.data"];
是否可以在Web API ApiController中实现相同的功能?
解决方法
ASP.NET Web API在处理不同的HTTP场景时变得非常强大 – 尤其是流式传输。因此,仅媒体类型格式化器通常触摸内容并且必须使内容保持一致。
在ASP.NET MVC中,application / x-www-form-urlencoded内容类型是一等公民(特别是因为这是95%POST请求的内容类型),我们有FormsCollection来提供字典访问权限。访问,只要它被定义为输入参数。
在ASP.NET Web API中,application / x-www-form-urlencoded是另一种内容类型,应该由其MediaTypeFormatter读取。因此,ASP.NET Web API无法对Forms进行任何假设。
ASP.NET Web API中的常规方法是将表单表示为模型,以便媒体类型格式化程序对其进行反序列化。另一种方法是将actions的参数定义为NameValueCollection:
public void Post(NameValueCollection formData) { var value = formData["key"]; }