Я использую JavaScript API v3. Я в основном геокодировать адрес следующим образом:
geocoder.geocode({ 'address': address }, function (results, status) {
//Get results array here
}
Это успешно работает. Теперь мне нужно передать этот JSON контроллеру MVC. Я видел множество способов сделать это, но я не могу заставить его работать с результатом Geocode.
From Haack : (У меня есть коллекция объектов, которая дублирует структуру результата. Самый внешний объект - result[]
(см. Ниже)).
geocoder.geocode({ 'address': address }, function (results, status) {
var jsonT = JSON.stringify(results);
$.ajax({
url: '/Ctrl/Action',
type: "POST",
dataType: 'json',
data: jsonT,
contentType: "application/json; charset=utf-8",
success: function (result) {
alert(result.Result);
}
});
}
Метод контроллера срабатывает, однако значение всегда null
.
[HttpPost]
public ActionResult Action(GoogleGeoCodeResponse geoResponse)
{
//geoResponse is always null
return View();
}
Мои классы Google
[Serializable]
public class GoogleGeoCodeResponse
{
//public string status { get; set; }
public results[] results { get; set; }
}
[Serializable]
public class results
{
public string[] types { get; set; }
public string formatted_address { get; set; }
public address_component[] address_components { get; set; }
public geometry geometry { get; set; }
public string partial_match { get; set; }
}
[Serializable]
public class address_component
{
public string[] types { get; set; }
public string long_name { get; set; }
public string short_name { get; set; }
}
[Serializable]
public class geometry
{
public location location { get; set; }
public string location_type { get; set; }
public viewport viewport { get; set; }
public bounds bounds { get; set; }
}
[Serializable]
public class location
{
public string lat { get; set; }
public string lng { get; set; }
}
[Serializable]
public class viewport
{
public southwest southwest { get; set; }
public northeast northeast { get; set; }
}
[Serializable]
public class bounds
{
public southwest southwest { get; set; }
public northeast northeast { get; set; }
}
[Serializable]
public class southwest
{
public string lat { get; set; }
public string lng { get; set; }
}
[Serializable]
public class northeast
{
public string lat { get; set; }
public string lng { get; set; }
}