2

je suis face à un problème dans le NerdDinner, ce que je suis face:NerdDinner insertion longitude et la latitude à la base de données MVC

dans les DinnerForm.ascx il y a un code javascript

$(document).ready(function() { 
     NerdDinner.EnableMapMouseClickCallback(); 

     $("#Dinner_Address").blur(function (evt) { 
      //If it's time to look for an address, 
      // clear out the Lat and Lon 
      $("#Dinner_Latitude").val("0"); 
      $("#Dinner_Longitude").val("0"); 
      var address = jQuery.trim($("#Dinner_Address").val()); 
      if (address.length < 1) 
       return; 
      NerdDinner.FindAddressOnMap(address); 
     }); 
    }); 

quand je lance la projet, et j'insère le nouveau Dîner, la longitude et la latitude insérées avec la valeur 0;

et quand je l'ai changé le "0" à un nombre

$ (document) .ready (function() { NerdDinner.EnableMapMouseClickCallback();

$("#Dinner_Address").blur(function (evt) { 
     //If it's time to look for an address, 
     // clear out the Lat and Lon 
     $("#Dinner_Latitude").val("12");// 
     $("#Dinner_Longitude").val("12");// 
     var address = jQuery.trim($("#Dinner_Address").val()); 
     if (address.length < 1) 
      return; 
     NerdDinner.FindAddressOnMap(address); 
    }); 
}); 

insère la valeur 12 pour long et de latitude à la base de données

donc je savais que son insertion cette valeur à la base de données, mais je ne suis pas sûr en fait

donc je vraiment w ant de savoir comment je peux résoudre ce problème, plz une: D

+0

Qu'est-ce que vous voulez qu'il fasse? –

+0

Je cours dans la même chose, quand j'insère un dîner, l'emplacement s'affiche correctement dans la page de création (et de modification), mais dans la page de détails, il utilise l'emplacement 0,0. – brien

+0

@brien, est-ce que ma réponse m'a aidé? – JustinStolle

Répondre

1

Rechercher dans Scripts/NerdDinner.js pour ce bloc de code:

//If we've found exactly one place, that's our address. 
//lat/long precision was getting lost here with toLocaleString, changed to toString 
if (NerdDinner._points.length === 1) { 
    $("#Latitude").val(NerdDinner._points[0].Latitude.toString()); 
    $("#Longitude").val(NerdDinner._points[0].Longitude.toString()); 
} 

Le problème semble être que ce script tente de définir les valeurs pour les éléments nommés Latitude Longitude et , mais dans Views \ Dinners \ DinnerForm.ascx, ces ids d'éléments sont résolus comme Dinner_Latitude et Dinner_Longitude, respectivement. Pour contourner ce problème, vous devriez pouvoir modifier deux lignes NerdDinner.js il donc mettre à jour ou l'autre élément qu'il trouve:

if (NerdDinner._points.length === 1) { 
    $("#Latitude,#Dinner_Latitude").val(NerdDinner._points[0].Latitude.toString()); 
    $("#Longitude,#Dinner_Longitude").val(NerdDinner._points[0].Longitude.toString()); 
} 
+0

+1! Dans mon cas, cela a permis de résoudre le problème: si l'on donnait une adresse, la carte ne la trouverait pas et serait centrée sur cette adresse. Je vous remercie! – Manfred

+0

@John Merci, heureux de savoir qu'il a aidé quelqu'un! – JustinStolle

0

Mon problème était que aucun des valeurs dans la page d'édition ont été persistaient. C'était un problème dans DinnersController.cs.

j'ai changé

UpdateModel(dinner, "Dinner"); 

à

UpdateModel(dinner); 

Il semblait que le problème était que le code du contrôleur a été nommé clés attend Dinner.Id, Dinner.Title, etc., mais les touches sont en fait nommé juste ID et titre (etc.).