我有一个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"}]
答案 0 :(得分:0)
使用通用对象(如JContainer)来捕获&#34;传入的数据。如果你不确定你得到了什么,甚至是对象。 然后看看你里面有什么。 我使用外部反序列化器将json转换回类。 (使用.ToString()使序列化程序可读)
(试试Json.Net)
另外 - 确保JSON未转换为Unicode。我也有这个问题。
另一个评论 - 我认为内容类型应该是application / json。 阅读:SO about json content type
答案 1 :(得分:-1)
运行Fiddler并捕获发送给控制器的Json。控制器需要一个List但看起来像是在发送单个对象。作为零的东西发生在我们很多人身上。我会尝试运行你拥有的东西。你还可以搞砸控制器并让它只是MyClass进来吗?