2

なぜこのエラーが発生するのですか?

コンパイラエラーメッセージ:CS1061:'System.Collections.Generic.IEnumerable'には'lat'の定義が含まれておらず、タイプ'System.Collections.Generic.IEnumerable'の最初の引数を受け入れる拡張メソッド'lat'が見つかりませんでした( usingディレクティブまたはアセンブリ参照がありませんか?)

.Ado Model
int、lat、lng、contents

コントローラ

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

Models のEnumerable ですriver。川を正しくループしているようですが、ループ内の各アイテムを間違って参照しています。

試す:

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 に答える