基本上,我的数据点(JavaScript中的clickPoints变量)没有传递到服务器端的操作方法,但它在表单请求中存在。
如下所示:
$("#excel").click(function() {
$("#Points").val(getExcelDataPoints(clickPoints));
$("#GeomType").val("LINESTRING");
$("#StartDate").val($("#start-date").val());
$("#EndDate").val($("#end-date").val());
$("#ExcelExport").submit(); // this is the form which I want to submit
});
除了点数以外,所有其他参数都正常工作。以下是getExcelDataPoints的定义:
function getExcelDataPoints(points)
{
var data = "{'Points': [";
for(var i = 0; i < points.length; i++) {
data += "{'Da': '" + points[i].lat() + "', 'Ea': '" + points[i].lng() + "'},";
}
data = data.substr(0, data.length - 1);
data += "]}";
return data;
}
您可能会想知道为什么我要手动构建它。原因有几个。问题在于,当使用jquery进行$.ajax
请求时,这绝对有效,所以我知道格式绝对没问题。但是,当像上面的第一个代码清单那样执行时,它不起作用。
这是服务器上的操作定义;
[HttpPost]
public IList<AISExcelPosition> ExcelExport(LatLng[] Points, GeomType GeomType, DateTime StartDate, DateTime EndDate)
{
var poo = Request.Form["Points"];
// Magical.... UNICORNS!
/*
`\
\\,
\\\,^,.,,.
,;7~((\))`;;,,
,(@') ;)`))\;;',
) . ),(( ))\;,
/;`,,/7),)) )) )\,, ,,,... ,
(& )` (,((,((;( ))\,_,,;'` `\\,
`" ` ), ))),/( ( `)\,
'1/';/; ` ))),
(, ( / ) ((/,
/ \ / ((('
( 6--\% ,> ,,,( /'))\'
\,\,/ ,/`----~`\ \ >,))))'
\/ / `--7>' /((((('
(,9 // /'('((\\\,
\ \,, (/,/ '\`\\'\
`\_)1 (_)Kk `\`\\`\
`\| \Z `\
` " `
*/
是的。我在我的代码中有一只宠物独角兽。
你会看到我们塞进去的var poo = Request.Form["Points"];
,这向我们证明了数据确实存在,并且格式良好(在底层POST请求中观察表单数据后)。
以下是实际的JSON数据:
"{'Points': [{'Da': '49.45995313552066', 'Ea': '-2.5134216308593977'},{'Da': '49.45894893804116', 'Ea': '-2.5134216308593977'}]}"
你有什么线索吗?我应该做什么?