Сегодня я пытаюсь получить JSON из моей части кода JS и передать его методу C#. Проблема, которую я получил null, когда я передал результат текущему методу.JSON от js до контроллера MVC
Вот мой JS часть:
GMaps.on('click',
map.map,
function(event) {
markers.push(new Point(map.markers.length, event.latLng.lat(), event.latLng.lng()));
var index = map.markers.length;
var lat = event.latLng.lat();
var lng = event.latLng.lng();
map.addMarker({
lat: lat,
lng: lng,
title: 'Marker #' + index
});
console.log(JSON.stringify(markers));
});
function TestJSON() {
$.ajax({
url: "@Url.Action("ReturnJson","Home")",
type: "POST",
data: JSON.stringify(markers),
contentType: "application/json; charset=utf-8",
dataType: "json"
});
};
Как видно из кода, в консоли я вижу, что массив маркеров не является пустым, и после каждого нового нажмите добавить значения в массив. Когда я найду все маркеры, я хочу его сохранить, поэтому я сделал для этого кнопку.
Вот моя модель данных:
public class TripPoint
{
public string Name { get; set; }
public double Latitude { get; set; }
public double Longitude { get; set; }
}
public class TripRoute
{
public List<TripPoint> route = new List<TripPoint>();
}
Это, как выглядит мой HTML код:
<form>
<button type="button" value="Save your route " onclick="TestJSON()"></button>
</form>
И наконец-то, как выглядит, как метод, который должен получить JSON строку
[HttpPost]
public ActionResult ReturnJson(string json)
{
// **********************************
// PROBLEM HERE: json is null
// **********************************
TripRoute route = new JavaScriptSerializer().Deserialize<TripRoute>(json);
return new EmptyResult();
}
Пожалуйста, помогите выяснить, почему я получаю пустую строку.
upd.
Вот мой маршрут конфигурация
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ReturnJSON",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "ReturnJSON", id = UrlParameter.Optional }
);
ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
}
}
Какая переменная равна нулю? Когда? Вы говорите, что 'route' в' ReturnJson() 'пуст или пуст? Или какая-то строка где-то? Что возвращает 'JSON.stringify (markers)? –
Пожалуйста, покажите, что у вас есть в RouteCollection. Я имею в виду метод RegisterRoutes в файле Global.asax.cs. – Antipod
@EdPlunkett oh, в методе ReturnJson параметр "string" json равен null. Когда я нажимаю кнопку (как я понимаю это), мне следует вызвать функцию TestJson в JS, которая передает значение json в острый метод. Я ошибаюсь? Что возвращает JSON.stringify (маркеры)? Как я думаю, он возвращает данные в формате json. – whoiskatrin