用于ASP.NET Web API的CSV媒体类型格式化程序

时间:2013-03-26 09:25:39

标签: csv asp.net-mvc-4 asp.net-web-api

我尝试为我的Web API实现CSV MediaTypeFormatter,如下所述: http://www.tugberkugurlu.com/archive/creating-custom-csvmediatypeformatter-in-asp-net-web-api-for-comma-separated-values-csv-format

(我不想粘贴那里的所有代码)

但我不能使用下面的Web API Controller来使用它。 我使用Fiddler来调用Web API:http://myhostname.com/api/csvexport?format=csv

public dynamic Get()
    {

        var ret = new[] { "CarId", "Make", "Model", "Name" }; 
        return ret;
    } 

对于CsvFormatter中的“type”,我得到一个:

DeclaringMethod ='type.DeclaringMethod'抛出类型'System.InvalidOperationException'的异常

只能在Type.IsGenericParameter为true的Type上调用方法。

所以我可能没有得到Formatter的概念,并且类型有问题吗?

1 个答案:

答案 0 :(得分:2)

您收到此错误是因为Tugberk的格式化程序仅适用于实现通用IEnumerable<T>接口的模型。这是有道理的,因为人们在获得一组结果时通常需要CSV格式的数据。如果您只想要一个数据实体,为什么还要以CVS格式?

您的方法返回类型为dynamic,而不是IEnumerable<T>。您可以通过执行更类似的操作来使其工作:

public IEnumerable<string> Get()
{
    var ret = new[] { "CarId", "Make", "Model", "Name" }; 
    return ret;
}