无法将JSON数据发送到MVC控制器

时间:2014-09-20 00:39:16

标签: javascript asp.net-mvc

我有一个JavaScript函数,如下所示:

function exportToExcel() {
    $.ajax({
        url: "/eBird/ExportToExcel",
        data: jsonSightingData,
        type: 'POST',
        contentType: 'application/json'
    });
} 

我的MVC控制器如下所示:

    public ActionResult ExportToExcel(List<Entities.MyClass> data)
{
    try
    {
        ...
    }
    catch (System.Exception exception)
    {
       ...
    }

MyClass定义是:

   public class MyClass
    {
        public string comName { get; set; }
        public int howMany { get; set; }
        public double lat { get; set; }
        public double lng { get; set; }
        public string locID { get; set; }
        public string locName { get; set; }
        public bool locationPrivate { get; set; }
        public string obsDt { get; set; }
        public bool obsReviewed { get; set; }
        public bool obsValid { get; set; }
        public string sciName { get; set; }
    }

该类与正好进入的JSON数据匹配。问题是,当我的控制器方法被调用时,&#39;数据&#39;永远是NULL。我的理解是MVC模型绑定器会自动将JSON数据绑定到我的MyClass列表。但它似乎没有起作用。

示例JSON如下:

[{"comName":"Great Black-backed Gull","lat":42.4613266,"lng":-76.5059255,"locID":"L99381","locName":"Stewart Park","locationPrivate":false,"obsDt":"2014-09-19 12:40","obsReviewed":false,"obsValid":true,"sciName":"Larus marinus"}]

2 个答案:

答案 0 :(得分:0)

使用通用对象(如JContainer)来捕获&#34;传入的数据。如果你不确定你得到了什么,甚至是对象。 然后看看你里面有什么。 我使用外部反序列化器将json转换回类。 (使用.ToString()使序列化程序可读)

(试试Json.Net)

另外 - 确保JSON未转换为Unicode。我也有这个问题。

另一个评论 - 我认为内容类型应该是application / json。 阅读:SO about json content type

答案 1 :(得分:-1)

运行Fiddler并捕获发送给控制器的Json。控制器需要一个List但看起来像是在发送单个对象。作为零的东西发生在我们很多人身上。我会尝试运行你拥有的东西。你还可以搞砸控制器并让它只是MyClass进来吗?