Я пытаюсь получить запрос на получение метода от моего контроллера, но я всегда получаю нулевые значения внутри местоположения параметра.MVC Ajax получает сложный тип, всегда получая нулевые значения
Моя модель:
public class UserLocation
{
public decimal Lat { get; set; }
public decimal Long { get; set; }
public UserLocation() { }
public UserLocation(decimal lat, decimal lon)
{
Lat = lat;
Long = lon;
}
}
Метод от моего контроллера
[HttpGet]
public JsonResult getLocations([FromUri]UserLocation userLocation, int perimeter)
{
return Json(LocationsHandler.getLocations(userLocation, perimeter));
}
И мой Аякса вызов
function getLocations() {
var loc = { location: { Lat: "0", Long: "11" } };
var range = 22;
$.ajax({
url: '/Location/getLocations',
type: 'GET',
dataType: 'application/json;',
data: { location: loc, perimeter: range },
success: function (result) {
alert(result.Data.length);
self.Parametros(result.Data);
},
error: function (xhr) {
alert('error');
}
});
Метод вызывается и во втором параметре (периметр) Я получаю правильное значение, но не в моем методе сложного типа.
Кто-нибудь знает, в чем проблема?
'данные: JSON.stringify ({userLocation: {Lat: "0", Long: "11"}, периметр: диапазон}),' (и удалить '[FromUri]') –
Я попробовал ваш решение, и проблема остается, я попытался добавить периметр в класс UserLocation и все тот же. – Jose
Просто заметили, что у вас есть другие проблемы. Вы можете просто сделать это 'data: {Lat: 0, Long: 11, perimeter: 22},' но его метод GET, поэтому вы также должны указать 'return Json (...., JsonRequestBehavior.AllowGet);' –