Эта привязка модели из jquery, что с ней не так? - PullRequest
0 голосов
/ 28 июня 2010

У меня есть следующее действие:

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 голосов
/ 29 июня 2010

Не совсем уверен, что вы делаете неправильно ... У вас есть какая-нибудь запись маршрута для 'Grid / GetGridCell'?

Попробуйте украсить свой метод JsonResult с помощью атрибута AcceptVerbs, создав отдельный метод для 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);
    }
...