Post Web API未在帖子上读取我的类型

Post Web API未在帖子上读取我的类型,post,asp.net-web-api,urlencode,Post,Asp.net Web Api,Urlencode,我试图通过POST将一些数据发送到我的Web API,但我的数据总是被读取为null 我将它作为表单数据发送 Content-Type: application/x-www-form-urlencoded 它在我的另一个项目中工作,但不是在这里,这很奇怪 我的类型是这样的: public class QueryResult { public List<string> Headers; public List<QueryResultLine> Result

我试图通过POST将一些数据发送到我的Web API,但我的数据总是被读取为null

我将它作为表单数据发送

Content-Type: application/x-www-form-urlencoded
它在我的另一个项目中工作,但不是在这里,这很奇怪

我的类型是这样的:

public class QueryResult
{
    public List<string> Headers;
    public List<QueryResultLine> Results;
}
[Route("export/excel")]
public HttpResponseMessage PostExportToExcel(QueryResult queryResult)
{
    DoSomething(queryResult);
}
每当我发出此请求时,queryResult.Headers和queryResult.Results都为null

收割台=%5B%22Nummer%22%2C%22omschrijing%22%2C%22%2C%22bewerder%22%2C%22Niveau%22%2C%22ArtikelNummer%22%2C%22Naam%22%2C%22InhoudKG%22%2C%22%22%2C%22炉渣%22%2C%22%22%22%2C%22%22%22%22%2cp%22%22%2C%22%22%22%2C%22%22%22%2C%22%22%2C%22%22%2C%22%22%2C%22%22%22%2C%22%2C%22%22%22%22%2C%22%22%22%2C%22%22%22%2C%22%22%22%2C%22%22%22%22%2C%22%22%22%22%22%22%22%2C%22%22%22%3A%22%22%2C%22%22%22%22%22%3A%22%22%2C%22%22%2C%22%3A%2C%22艺术品制作者%22%3A%22AM00632548%22%2C%22Naam%22%3A%22%22四氢噻吩++香精++天然气+加臭剂%22%2C%22%22%22%3A150%2C%22%22InhoudKG%22%3A150%2C%22%22150%22%22150%22%22%22%22%22%3A%22%22%22%22150%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%22%2%2+P403%2B235%2C+P405%22%2C%22%24%24哈希键%22%3A%22对象%3A210%22%7D%5D

每当我发出此请求时,queryResult.Headers和 queryResult.Results为空

标题
结果
在模型绑定期间不会绑定,因为它们声明为字段,而不是属性。默认模型绑定器将仅绑定属性。查看更多详细信息

因此,您应该将
QueryResult
的定义调整为:

public class QueryResult
{
    public List<string> Headers { get; set; }

    public List<QueryResultLine> Results { get; set; }
}
公共类查询结果
{
公共列表头{get;set;}
公共列表结果{get;set;}
}
对于您提供的查询主体,
标题
属性将被反序列化为一个列表,其中一个字符串为

[“Nummer”、“Omschrijving”、“Locatie”、“Beheerder”、“Niveau”、“ArtikerNummer”、“Naam”、“InhoudL”、“InhoudKG”、“Voorkomen”、“Op渣”、“Seveso”、“CLP”、“Uitvoering”、“Voorziening”、“Hpzinen”]

我相信这不是您所期望的,您需要将所有这些值作为单独的字符串添加到列表中。 要实现这一点,您应该修复从客户端发送的请求。以下请求正文将正确反序列化为值列表:

Headers=Nummer&Headers=Omschrijving&Headers=Locate&Headers=Beheerder&Headers=Niveau&Headers=ArtikerNummer&Headers=Naam&Headers=InhoudL&Headers=InhoudKG&Headers=Voorkomen&Headers=Opslag&Headers=Seveso&Headers=CLP&Headers=Uitvoering&Headers=Voorziening&Headers=HPZinen

如您所见,对于构建列表,
标题
只是用不同的值重复。
结果的请求部分
应该以同样的方式进行调整。

谢谢,这是一件我从未注意到的愚蠢的小事!