Sử dụng <text>
phần tử giả, như được mô tả ở đây , để buộc trình biên dịch dao cạo trở lại chế độ nội dung:
<script type="text/javascript">
// Some JavaScript code here to display map, etc.
// 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>
Cập nhật:
Scott Guthrie gần đây đã đăng về @:
cú pháp trong Dao cạo, hơi khó sử dụng hơn một chút so với <text>
thẻ nếu bạn chỉ có một hoặc hai dòng mã JavaScript để thêm. Cách tiếp cận sau có lẽ sẽ thích hợp hơn, vì nó làm giảm kích thước của HTML được tạo. (Bạn thậm chí có thể di chuyển hàm addMarker sang tệp JavaScript được lưu trong bộ nhớ cache để giảm thêm kích thước):
<script type="text/javascript">
// Some JavaScript code here to display map, etc.
...
// Declare addMarker function
function addMarker(latitude, longitude, title, description, map)
{
var latLng = new google.maps.LatLng(latitude, longitude);
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', map);
}
</script>
Cập nhật mã trên để thực hiện cuộc gọi addMarker
chính xác hơn.
Để làm rõ, các @:
lực lượng Dao cạo trở lại chế độ văn bản, mặc dù addMarker
cuộc gọi trông rất giống mã C #. Sau đó, dao động chọn @item.Property
cú pháp để nói rằng nó sẽ trực tiếp xuất nội dung của các thuộc tính đó.
Cập nhật 2
Điều đáng chú ý là Xem mã thực sự không phải là nơi tốt để đặt mã JavaScript. Mã JavaScript phải được đặt trong một .js
tệp tĩnh và sau đó nó sẽ nhận được dữ liệu mà nó cần từ một cuộc gọi Ajax hoặc bằng cách quét các data-
thuộc tính từ HTML. Bên cạnh việc có thể lưu mã JavaScript của bạn, điều này cũng tránh được các vấn đề về mã hóa, vì Dao cạo được thiết kế để mã hóa cho HTML, nhưng không phải là JavaScript.
Xem mã
@foreach(var item in Model)
{
<div data-marker="@Json.Encode(item)"></div>
}
Mã JavaScript
$('[data-marker]').each(function() {
var markerData = $(this).data('marker');
addMarker(markerData.Latitude, markerData.Longitude,
markerData.Description, markerData.Title);
});
@:
cú pháp.