剃刀与javascript问题

Razor with javascript issue

本文关键字:问题 javascript 剃刀      更新时间:2023-09-26

我创建了一个谷歌地图,我想在上面添加一个标记列表。但是我有一些razor-javascript问题。
我的cshtml文件有一个模型@model IEnumerable<MCN.Domain.Entities.Location>
我的模型加载很好,它包含所有值。
我在浏览器中调试JS代码,它进入addMarker方法,但停在var marker = new google.maps.Marker({部分。
在visual studio中,我有绿色下划线@foreach (var item in Model) {与消息:"条件编译被关闭"这是JS部分:

<script type="text/javascript">
(function () {
        window.onload = function () {
            var mapDiv = document.getElementById('map');
            var latlng = new google.maps.LatLng('41.01146', '24.921659');
            var options = { styles: styleArray,
                center: latlng,
                zoom: 15,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                mapTypeControl: false                
            };
            var map = new google.maps.Map(mapDiv, options);
            @foreach (var item in Model) {                
                 @:addMarker(@item.Latitude, @item.Longitude, '@item.Name', '@item.DiscoveredBy');
             }           
        }
    })();
function addMarker(latitude, longitude, title, description)
{    
      var markerlatLng = new google.maps.LatLng(latitude, longitude);
      var title = 'test';
      var description = 'test';
      var contentString = 'test';
      var infowindow = new google.maps.InfoWindow({
          content: contentString
      });
      var marker = new google.maps.Marker({
          position: latLng,
          title: title,
          map: map,
          draggable: false
      });
      google.maps.event.addListener(marker, 'click', function () {
          infowindow.open(map, marker);
      });
}
</script>

JS From browser:

(function () {
        window.onload = function () {
            var mapDiv = document.getElementById('map');
            var latlng = new google.maps.LatLng('44.01146', '20.921659');
            var options = { styles: styleArray,
                center: latlng,
                zoom: 15,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                mapTypeControl: false                
            };
            var map = new google.maps.Map(mapDiv, options);
                 addMarker(20.921659, 44.01146, 'Svetozar markovic', 'user');
                 addMarker(20.92829, 44.010333, 'Glavna Stanica', 'user');

        }
    })();

Visual Studio不希望在<script>标记中看到Razor标记。没关系,希望他们将来会增加对这个的支持。

重要的是你不会在浏览器中得到javascript错误。

试着用括号把代码本身括起来。这将消除您看到的错误。

示例:@Url.Action("MyAction", new { my_param = "my_value" }))