<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>
अपडेट करें:
स्कॉट गुथ्री ने हाल ही@:
में रेजर में वाक्य रचना के बारे में पोस्ट किया है , जो <text>
टैग की तुलना में थोड़ा कम क्लंकी है यदि आपके पास जोड़ने के लिए जावास्क्रिप्ट कोड की सिर्फ एक या दो लाइनें हैं। निम्नलिखित दृष्टिकोण शायद बेहतर होगा, क्योंकि यह उत्पन्न HTML के आकार को कम करता है। (आप भी आकार को कम करने के लिए addMarker फ़ंक्शन को स्थिर, कैश्ड जावास्क्रिप्ट फ़ाइल में स्थानांतरित कर सकते हैं):
<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
कॉल सी # कोड की तरह दिखता है। उस्तरा तो उठाता है@item.Property
सिंटैक्स को यह कहने के लिए चुना कि यह सीधे उन गुणों की सामग्री का उत्पादन करना चाहिए।
अपडेट २
यह ध्यान देने योग्य है कि जावास्क्रिप्ट कोड डालने के लिए व्यू कोड वास्तव में अच्छी जगह नहीं है। जावास्क्रिप्ट कोड को एक स्थिर .js
फ़ाइल में रखा जाना चाहिए , और फिर उसे वह डेटा प्राप्त करना चाहिए जो उसे या तो अजाक्स कॉल से चाहिए या data-
HTML से विशेषताओं को स्कैन करके । अपने जावास्क्रिप्ट कोड को कैश करना संभव बनाने के अलावा, यह एन्कोडिंग के साथ मुद्दों से भी बचता है, क्योंकि रेजर को 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);
});
@:
सिंटैक्स के बारे में मेरे अपडेट में दिलचस्पी हो सकती है ।