2

为什么我会收到此错误?

编译器错误消息:CS1061:“System.Collections.Generic.IEnumerable”不包含“lat”的定义,并且找不到接受“System.Collections.Generic.IEnumerable”类型的第一个参数的扩展方法“lat”(您是否缺少 using 指令或程序集引用?)

.Ado 模型
int, lat, lng, 内容

控制器

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MapApp.Models;

namespace MapApp.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        mapEntities _db = new mapEntities();

        public ActionResult Index()
        {
            return View(_db.river);
        }

        public ActionResult About()
        {
            return View();
        }
    }
}

看法

@model IEnumerable<MapApp.Models.river>
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2> Index</h2>
<script type="text/javascript">
@foreach (var item in Model)
{
    <text>
      var markerlatLng = new google.maps.LatLng(@(Model.lat), @(Model.lng));
      var contents = '@(Model.contents)';

      var infowindow = new google.maps.InfoWindow({
          content: contents
      });

      var marker = new google.maps.Marker({
          position: markerlatLng,
          title: contents,
          map: map,
          draggable: false
      });

      google.maps.event.addListener(marker, 'click', function () {
          infowindow.open(map, marker);
      });

   </text>
}
</script>
4

2 回答 2

0

Modelrivers 的一个 Enumerable。您似乎正确地循环穿过河流,但您在循环内错误地引用了每个项目。

尝试:

var markerlatLng = new google.maps.LatLng(@(item.lat), @(item.lng));
var contents = '@(item.contents)';

这应该够了吧。

于 2012-10-11T19:41:34.283 回答
0

修好了!

控制器

public class HomeController : Controller
{
    mapEntities _db = new mapEntities();

    public ActionResult Index()
    {
        return View(_db.river.ToList());
    }
}

看法

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

$(function () {
    var latLng = new google.maps.LatLng(52.379397, 4.889644); // Amsterdam
    var map = new google.maps.Map(document.getElementById('map-canvas'), {
        zoom: 15,
        center: latLng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    });

    function addMarker(latitude, longitude, title)
    {
        var markerLatLng = new google.maps.LatLng(latitude, longitude);
        var title = title;

        var marker = new google.maps.Marker({
            position: markerLatLng,
            title: title,
            map: map,
            draggable: false
        });
    };

   @foreach (var item in Model)
   {  
     @:addMarker(@item.latitude, @item.longitude, "@item.title");
   }

}); 

</script>
<div id="map-canvas">
</div>
于 2012-10-15T09:09:18.857 回答