«отсутствует с помощью директивы» передача данных из базы данных sql для просмотра asp.net mvc3 c#

#asp.net-mvc-3 #google-maps #c#-4.0

#asp.net-mvc-3 #google-карты #c #-4.0

Вопрос:

Я видел коды, передающие данные модели в представление, но я не видел, чтобы кто-либо передавал данные из базы данных sql в представление. Я пытаюсь передать свои данные из базы данных sql в представление, чтобы я мог просмотреть их на своей веб-странице. Я всегда получаю сообщение об ошибке «отсутствует директива using».

  "CS1061: 'System.Collections.Generic.IEnumerable' does not contain a definition for 'longitude' and no extension method 'longitude' accepting 
 a first argument of type 'System.Collections.Generic.IEnumerable' could be found (are you missing a using directive or an assembly reference?)"
  

Я чего-то не хватает .. кто-нибудь знает?? Спасибо.

Вот мой код. Я пытаюсь получить долготу и широту из своей базы данных.

Код домашнего контроллера

     public ActionResult Index()
    {
        var ldc = new locationDataContext();
        var loc = (from l in ldc.locationModels select l).First();
        return View(loc);
    }
  

Код индексирования

 @model IEnumerable<googleMap2.Models.locationModel>
@{ 
    ViewBag.Title = "MVC 3 and Google Maps"; 
}

@section Scripts { 
    <script type="text/javascript"  src="http://maps.google.com/maps/api/js?sensor=false"></script>
}

@section Styles { 
    html { height: 80% } 
    body { height: 80%; margin: 0px; padding: 0px } 
    #map_canvas { height: 80% } 
}

<h2>Hello, Google Maps</h2>

<div id="map_canvas" style="width:80%; height:80%"></div>

<script type="text/javascript">

    function initialize() {
        var latlng = new google.maps.LatLng(@Model.longitude, @Model.latitude);
        var options = { zoom: 14, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP };
        var map = new google.maps.Map(document.getElementById("map_canvas"), options);
        //google.maps.event.trigger(map, 'resize');
    }

    $(function () {
        initialize();
    }); 

</script>
  

Ответ №1:

Ваша модель имеет тип IEnumerable<>, объявленный здесь:

 @model IEnumerable<googleMap2.Models.locationModel >
  

, но здесь:

 var latlng = new google.maps.LatLng(@Model.longit ude, @Model.latitude);
  

Вы пытаетесь ссылаться на свойства latitude и longitute…

Итак, либо ваша модель должна иметь тип googleMap2.Models.locationModel, либо вы должны перечислять поверх своей модели ie

 foreach(var location in model)
{
    var latlng = new google.maps.LatLng(location.longitude, location.latitude);
// rest of code here 
}
  

Комментарии:

1. Это тоже не работает. Я пытался это сделать @model googleMap2.Models.location and @model IEnumerable . Я также пытался foreach (var l in model){...} and var latlng = new google.maps.latlng ...

2. Хорошо, из вашего метода контроллера видно, что ваша модель имеет тип googleMap2.Models.locationModel, используйте это в своем представлении.

3. Я уже пробовал это, но это тоже не работает. Он продолжает говорить, что мне не хватает директивы using..

4. Какой тип loc? Есть ли в нем поля / свойства широты и долготы?