这个来自jquery的模型绑定,它有什么问题?

时间:2010-06-28 18:32:37

标签: c# .net jquery asp.net-mvc-2 model-binding

我有以下行动:

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

我做错了什么?

1 个答案:

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