2016-05-26 6 views
0

Ich habe die Breiten- und Längengrade hart codiert, aber ich bekomme immer noch Nullwerte im Controller, ich habe viele Lösungen ausprobiert, konnte sie aber nicht zum Laufen bringen. Ich denke, es gibt eine Diskrepanz zwischen meinem Javascript-Objekt "mydata" und meiner MVC-Objekttabelle.Senden von Breiten- und Längengrad-Doppelwerten an MVC-Controller, aber Erhalten von NULL-Werten

Javascript-Code

<script> 
 
map.setContextMenu({ 
 
       control: 'map', 
 
       options: [{ 
 
        title: 'Click to add marker', 
 
        name: 'add_marker', 
 
        action: function (e) { 
 
         $("#markerform").show(); 
 
         var latitude = 31.555; 
 
         var longitude = 74.333; 
 
         var m = $('#m').val(); 
 
         var n = $('#n').val(); 
 
         var o = $('#o').val(); 
 
         var ad = $('#ad').val(); 
 
         var ph = $('#ph').val(); 
 
         var w = $('#w').val(); 
 
         var fb = $('#fb').val(); 
 
         var l = "RAO"; 
 

 
         var mydata = { 
 
          lat: latitude, 
 
          lng: longitude, 
 
          marker: m, 
 
          name: n, 
 
          offer: o, 
 
          address: ad, 
 
          phn: ph, 
 
          website: w, 
 
          fbpage: fb, 
 
          logo: l 
 
         }; 
 
         function SaveMarker() { 
 
          $.ajax({ 
 
           type: 'POST', 
 
           data: mydata, 
 
           url: "/Home/AddMarker", 
 
           // dataType: 'json', 
 
           // data: JSON.stringify(data), 
 
           success: function() { 
 
            alert('suc'); 
 
           }, 
 
           error: function (args) { 
 
            alert('error'); 
 
           } 
 
          }); 
 
        } 
 
        } 
 
       } 
 
       ] 
 
      }); 
 
</script>
In Controller

[HttpPost] 
public ActionResult AddMarker(Table t){ 

     //Some Code 
     return View("../Home/Index"); 
} 

My Table Klasse

public partial class Table 
{ 
    public int Id { get; set; } 
    public Nullable<double> lat { get; set; } 
    public Nullable<double> lng { get; set; } 
    public string marker { get; set; } 
    public string name { get; set; } 
    public string offer { get; set; } 
    public string address { get; set; } 
    public string phn { get; set; } 
    public string website { get; set; } 
    public string fbpage { get; set; } 
    public string logo { get; set; } 
} 

Antwort

0

Danke für die Hilfe @Chris Pratt, ich habe endlich die Lösung gefunden. Ich habe die Funktion SaveMarker aus einem Formular aufgerufen, weshalb die Funktion die Breiten- und Längenwerte nicht gelesen hat. Jetzt bekomme ich die lat lng Werte in einer separaten Funktion mit einem separaten Ajax Anruf, alles funktioniert jetzt reibungslos :).

0

Sie stringify nicht Ihre JSON-Daten. An dieser Stelle posten Sie eine Zeichenfolge, nicht JSON oder eine Gruppe von Name/Wert-Paaren. MVC versucht, die Zeichenfolge selbst als Table zu binden und schlägt natürlich fehl, weil es keine Konvertierung von string in Ihre Table Klasse gibt. Übergeben Sie stattdessen data selbst als data Parameter für Ihre AJAX-Anfrage. Das setzt auch voraus, dass das JavaScript-Objekt, das von data dargestellt wird, Ihre C# Table Klasse widerspiegelt. Andernfalls haben Sie weiterhin Probleme beim Binden. Mit anderen Worten, wenn Ihre Klasse Table eine Eigenschaft Latitude hat, dann müsste Ihr JavaScript-Objekt ein Element mit dem Namen Latitude oder latitude (Gehäuse ist nicht wichtig) haben.

+0

Ich habe meine Daten nicht stringifiziert, da Sie sehen können, dass sie bereits kommentiert sind, aber ich werde versuchen, Daten als Parameter in meiner Ajax-Anfrage zu übergeben. –

+0

Ich habe versucht, Daten als Parameter zu übergeben, aber immer noch null Werte für Breitengrad, Längengrad und Logo. Es scheint, als ob nur die var, die ich hart codiert habe, Nullwerte geben. –

Verwandte Themen