我们需要用<text>将javascript代码包含起来,强制让razor编译器回到内容模式,
或者将javascript代码放在函数中,让razor编译器可以识别,请看下面两个例子:
<script type="text/javascript"> //now add markers @foreach (var item in Model) { <text> var markerlatLng = new google.maps.LatLng(@(Model.Latitude), @(Model.Longitude)); var title = '@(Model.Title)'; var description = '@(Model.Description)'; var contentString = '<h3>' + title + '</h3>' + '<p>' + description + '</p>' 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); }); </text> } </script>
例子2:
<script type="text/javascript"> //some javascript code here to display map etc ... //declare addMarker function function addMarker(latitude, longitude, title, description) { var markerlatLng = new google.maps.LatLng(@(Model.Latitude), @(Model.Longitude)); var title = '@(Model.Title)'; var description = '@(Model.Description)'; var contentString = '<h3>' + title + '</h3>' + '<p>' + description + '</p>' 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); }); } //now add markers @foreach (var item in Model) { @:addMarker(@item.Latitude, @item.Longitude, '@item.Title', '@item.Description'); } </script>