heute versuche ich, JSON von meinem JS-Teil des Codes zu bekommen und es an C# Methode übergeben. Das Problem, dass ich null bekam, wenn ich das Ergebnis an die aktuelle Methode übergeben habe.JSON von js zu MVC-Controller
Hier ist mein JS Teil:
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"
});
};
Wie Sie aus dem Code zu sehen, die in der Konsole sehe ich, dass Array von Markern nicht leer ist und nach jedem neuen klicken ich einen Wert in das Array hinzuzufügen. Wenn ich alle Markierungen finden will, die ich speichern möchte, habe ich einen Knopf dafür gemacht.
Hier ist meine Datenmodell:
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>();
}
Es wie wie mein HTML-Code aussieht:
<form>
<button type="button" value="Save your route " onclick="TestJSON()"></button>
</form>
Und endlich es, wie sieht aus wie die Methode, die JSON-String
[HttpPost]
public ActionResult ReturnJson(string json)
{
// **********************************
// PROBLEM HERE: json is null
// **********************************
TripRoute route = new JavaScriptSerializer().Deserialize<TripRoute>(json);
return new EmptyResult();
}
bekommen sollte
Bitte helfen Sie herauszufinden, warum ich eine Null-Zeichenfolge bekomme.
upd.
Hier ist meine Route Config
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());
}
}
Welche Variable ist null? Wann? Willst du sagen, dass 'route' in' ReturnJson() 'null oder leer ist? Oder irgendwo eine Schnur? Was gibt 'JSON.stringify (markers)' zurück? –
Bitte zeigen Sie, was Sie in der RouteCollection haben. Ich meine in RegisterRoutes-Methode in der Global.asax.cs. – Antipod
@EdPlunkett oh, in der Methode ReturnJson ein Parameter "Zeichenfolge" json ist null. Wenn ich einen Knopf drücke (wie ich das verstehe), sollte ich die Funktion TestJson in JS aufrufen, die den JSON-Wert an die cis-Methode übergibt. Liege ich falsch? Was gibt JSON.stringify (Markierungen) zurück? Wie ich denke, gibt es Daten im JSON-Format. – whoiskatrin