我有以下行动:
public JsonResult GetGridCell(double longitude, double latitude)
{
var cell = new GridCellViewModel { X = (int)Math.Round(longitude.Value, 0), Y = (int)Math.Round(latitude.Value, 0) };
return Json(cell);
}
我用以下jquery调用它:
$.post('Grid/GetGridCell', { longitude: location.longitude, latitude: location.latitude },
function (data) {
InsertGridCellInfo(data);
});
我的GetGridCell操作中的参数永远不会被填充(它们为空)。 调试时我可以看到我的Request.Form [0]被称为经度并且具有正确的值。纬度也一样。
当我使用完全相同的代码时,但使用$.get
一切正常。
我做错了什么?
答案 0 :(得分:0)
不太确定你做错了什么......你有'Grid / GetGridCell'的路线条目吗?
尝试使用AcceptVerbs属性修饰JsonResult方法,为Get创建一个单独的方法,为Post创建另一个方法
在没有任何路线输入的快速测试(对我来说)下,我能够传递值:
使用以下示例发布值:
$.post('Home/GetGridCell', { longitude: 11.6, latitude: 22.2 },
function(data) {
alert(data);
});
使用$ .get intead调用
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult GetGridCell(double longitude, double latitude)
{
var cell = new GridCellViewModel { X = (int)Math.Round(longitude), Y = (int)Math.Round(latitude) };
return Json(cell);
}
和
$。发布电话
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult GetGridCell(double longitude, double latitude, FormCollection collection)
{
var cell = new GridCellViewModel { X = (int)Math.Round(longitude), Y = (int)Math.Round(latitude) };
return Json(cell);
}