#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? Есть ли в нем поля / свойства широты и долготы?