无法JSON数据发送到MVC控制器
问题描述:
我有一个JavaScript函数,如下所示:无法JSON数据发送到MVC控制器
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数据。问题是当我的控制器方法被调用时,'data'总是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"}]
答
使用一般的物品(如JContainer) “捕捉” 的输入数据。甚至如果你不确定你得到了什么Object。 然后看看你里面有什么。 我使用外部解串器将json转换回类。 (使用的ToString(),使之可读到串行)
(试行Json.Net)
而且 - 请确保JSON没有转换成Unicode。我也遇到了一个问题。
另一种说法 - 我认为内容类型应该是application/json。 阅读:SO about json content type
答
运行Fiddler和捕获Json发送到控制器。控制器需要一个List,但看起来像是发送单个对象。我们中的很多人都会遇到无效的东西。我会尝试运行你所拥有的。你也可以混淆控制器,并给它只是MyClass进来?
你可以展示一个JSON的例子吗? – 2014-09-20 00:41:11
当你在控制器动作中查看'ModelState'时,是否会看到任何错误? – 2014-09-20 00:44:32
@AndrewWhitaker - ModelState.IsValue = true – 2014-09-20 00:47:29