0

我有以下动作:

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一切正常。

我究竟做错了什么?

4

1 回答 1

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);
    }

$.post 来电

    [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);
    }
于 2010-06-28T23:21:35.880 回答