ใช้<text>
องค์ประกอบเทียมตามที่อธิบายไว้ที่นี่เพื่อบังคับให้คอมไพเลอร์มีดโกนกลับเข้าสู่โหมดเนื้อหา:
<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>
ปรับปรุง:
Scott Guthrie โพสต์เมื่อเร็ว ๆ นี้เกี่ยวกับ@:
ไวยากรณ์ในมีดโกนซึ่งน้อยกว่า clunky <text>
แท็กเล็กน้อยหากคุณเพิ่งเพิ่มโค้ด JavaScript หนึ่งหรือสองบรรทัด วิธีต่อไปนี้น่าจะดีกว่าเนื่องจากจะลดขนาดของ HTML ที่สร้างขึ้น (คุณสามารถย้ายฟังก์ชัน addMarker ไปยังไฟล์ JavaScript แบบคงที่และแคชเพื่อลดขนาดเพิ่มเติม):
<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>
อัปเดตรหัสข้างต้นเพื่อให้การโทรaddMarker
ถูกต้องมากขึ้น
เพื่อความกระจ่าง@:
ชัดกองกำลังมีดโกนกลับเข้าสู่โหมดข้อความแม้ว่าการaddMarker
โทรจะดูเหมือนรหัส C # มาก มีดโกนจากนั้นหยิบ@item.Property
ไวยากรณ์เพื่อบอกว่ามันควรจะเอาท์พุทเนื้อหาของคุณสมบัติเหล่านั้นโดยตรง
อัปเดต 2
เป็นที่น่าสังเกตว่ารหัสการดูไม่ใช่เรื่องที่ดีที่จะใส่รหัส JavaScript ควรวางโค้ด JavaScript ใน.js
ไฟล์สแตติกแล้วควรรับข้อมูลที่ต้องการจากการโทร Ajax หรือโดยการสแกนdata-
แอตทริบิวต์จาก HTML นอกเหนือจากการทำให้เป็นไปได้ที่จะแคชโค้ด JavaScript ของคุณสิ่งนี้ยังช่วยหลีกเลี่ยงปัญหาการเข้ารหัสเนื่องจากมีดโกนถูกออกแบบมาเพื่อเข้ารหัสสำหรับ HTML แต่ไม่ใช่จาวาสคริปต์
ดูรหัส
@foreach(var item in Model)
{
<div data-marker="@Json.Encode(item)"></div>
}
รหัสจาวาสคริปต์
$('[data-marker]').each(function() {
var markerData = $(this).data('marker');
addMarker(markerData.Latitude, markerData.Longitude,
markerData.Description, markerData.Title);
});
@:
ไวยากรณ์