Отправка double в ASP.net MVC-контроллер с помощью AJAX - PullRequest
0 голосов
/ 24 августа 2011

У меня проблема с контроллером AJAX в ASP.net MVC. У меня есть приложение, отправляющее географические координаты с AJAX контроллеру ASP.net MVC. Эти координаты двойные, но когда я отправляю их как двойные, контроллер возвращает страницу с ошибкой. Но когда я отправляю координаты как целое число, контроллер возвращает правильный результат.

ОШИБКА:

The parameters dictionary contains a null entry for parameter 'latitude' of non-nullable type...

Это работает:

function()
    {
        $.post(url, 
               { 
                    "latitude"  : 28, 
                    "longitude" : 64,
                    "distance"  : 100
               },
               function(data)
               {
                    ...
               }
            );
    }

Это не:

function()
    {
        $.post(url, 
               { 
                    "latitude"  : 28.457, 
                    "longitude" : 64.574,
                    "distance"  : 100
               },
               function(data)
               {
                    ...
               }
            );
    }

Контроллер:

    [HttpPost]
    public JsonResult GetPlaces(float latitude, float longitude, float distance)
    {
        /* data mining */
        return Json(jsonPlaces.ToList());
    }

Ответы [ 5 ]

2 голосов
/ 24 августа 2011

Я думаю, что это проблема локализации, поэтому вам нужно изменить значения на запятую или объявить local в приложении mvc

здесь точка с кодом изменения запятой

var lati = 2.24;
var latitude = lati.replace (/\./g, ',');

пожалуйста, попробуйте, может быть, это решит

1 голос
/ 24 августа 2011

Какой тип данных вы используете в вашем контроллере?Я сделал что-то очень похожее, как вы пытаетесь, и это сработало.Я использовал тип данных .net decimal .Кроме того, убедитесь, что вы используете действительно одинаковые имена переменных (чувствительны к регистру)

Это код контроллера ASP.net MVC, который работал для меня:

public ActionResult SaveColumn(string ID, decimal Value, string comment)
{
  //...
}

Вот как я назвалэто в JavaScript:

$.ajax({ url: "SaveColumn?ID=" + id + "&Value="+val+"&comment="+comment, cache: false, success: function (data, textStat, jqXHR) { ... }});
0 голосов
/ 24 мая 2012

Я решил ту же проблему, что и у вас, с помощью глобализации в Web.config.

http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx

0 голосов
/ 24 августа 2011

Спасибо, это проблема локализации, это работает:

$.post(url, 
               { 
                    "latitude"  : "49,81", 
                    "longitude" : "12,44",
                    "distance"  : distance
               },
               function(data)
               {
                    ...
               }
            );

Есть ли возможность отключить форматы локализации в указанных методах контроллера (особенно для параметров), но все равно использовать их в представлениях?

0 голосов
/ 24 августа 2011

Если бы была эта проблема только сегодня вечером с DateTime. Оказалось, проблема локализации. Я подозреваю, что ты тоже. Например, серверная сторона ожидает 5,5, но получает 5,5 от клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...