ASP.NET web api无法获取应用程序/x-www-form-urlencoded HTTP POST

我不熟悉web api。我想使用web api接收HTTP POST数据。内容类型为application/x-www-form-urlencoded,请求正文如下:

data={“mac”:“0004ED123456”,“model”:“SG6200NXL”}(JSON格式)

我的控制器是这样的:

公共作废帖子([FromBody]字符串formData)
{
data.Add(formData);
}

但是formData总是空的。仅当我将请求正文更改为:

={“mac”:“0004ED123456”,“model”:“SG6200NXL”}

我可以找到{“mac”:“0004ED123456”,“model”:“SG6200NXL”}保存在我的formData字符串中

因此,我的问题是如何接收格式为的数据:

data={“mac”:“0004ED123456”,“model”:“SG6200NXL”}

有没有一种简单的方法可以将JSON淡化为C#

谢谢你的帮助

更新:
我试着使用这个模型,但它仍然不适合我。
我的模型是:

公共类设备
{
公共字符串mac{get;set;}
公共字符串模型{get;set;}
}

我的HTTP POST请求是:

标题:

用户代理:Fiddler
内容类型:application/x-www-form-urlencoded
主机:本地主机:52154
内容长度:46

正文:

data={“mac”:“0004ED123456”,“model”:“SG6200NX”}

据我所知,我必须使用内容类型:application/x-www-form-urlencoded,因为HTTP POST是由路由器发送的。我的工作是接收数据

从这里引述:

默认情况下,WebAPI尝试从请求URI获取简单类型。属性告诉Web API从请求主体读取值

Web API最多读取一次响应体,因此一个操作的一个参数只能来自请求体。如果需要从请求主体获取多个值,请定义复杂类型

其次,客户端需要以以下格式发送值:

=值

具体来说,对于简单类型,名称/值对的名称部分必须为空

因此,如果要以data=string格式发布数据,必须创建复杂类型

公共类MyFormData
{
公共字符串数据{get;set;}
}

并更新控制器,如下所示:

公共作废帖子(MyFormData formData)
{
//您的JSON字符串将采用formData.Data格式
}

当然,您的其他选择是将内容类型更改为JSON,但这取决于您的需求

发表评论