第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在JavaScript中使用Razor

在JavaScript中使用Razor

陪伴而非守候 2019-06-21 17:02:38
在JavaScript中使用Razor在視圖中的JavaScript中使用Razor語法可以嗎?cshtml)?我想在谷歌地圖上添加標(biāo)記.例如,我嘗試過這樣做,但是我得到了大量的編譯錯誤:<script type="text/javascript">     // Some JavaScript code here to display map, etc.     // Now add markers     @foreach (var item in Model) {         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);         });     }</script>
查看完整描述

3 回答

?
拉丁的傳說

TA貢獻1789條經(jīng)驗 獲得超8個贊

使用<text>偽元素,如所述這里,強制Razor編譯器返回內(nèi)容模式:

<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>

最新情況:

斯科特格斯里關(guān)于@:語法在Razor中,它比<text>如果您只需要添加一兩行JavaScript代碼,則標(biāo)記。下面的方法可能更好,因為它減少了生成的HTML的大小。(您甚至可以將addMarker函數(shù)移動到靜態(tài)緩存的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>

更新上述代碼以調(diào)用addMarker更正確。

為了澄清,@:強迫Razor回到文本模式,即使addMarkerCall看起來很像C#代碼。然后剃刀拿起@item.Property語法,它應(yīng)該直接輸出這些屬性的內(nèi)容。

更新2

值得注意的是,View代碼確實不是一個放置JavaScript代碼的好地方。JavaScript代碼應(yīng)該放在靜態(tài)中.js文件,然后它應(yīng)該從ajax調(diào)用或通過掃描獲得所需的數(shù)據(jù)。data-HTML中的屬性。除了可以緩存JavaScript代碼之外,這還避免了編碼問題,因為Razor是為HTML而設(shè)計的,而不是JavaScript。

視圖代碼

@foreach(var item in Model){
    <div data-marker="@Json.Encode(item)"></div>}

JavaScript代碼

$('[data-marker]').each(function() {
    var markerData = $(this).data('marker');
    addMarker(markerData.Latitude, markerData.Longitude,
              markerData.Description, markerData.Title);});


查看完整回答
反對 回復(fù) 2019-06-21
?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

我剛剛寫了這個助手函數(shù)。放進去App_Code/JS.cshtml:

@using System.Web.Script.Serialization@helper Encode(object obj){
    @(new HtmlString(new JavaScriptSerializer().Serialize(obj)));}

然后在您的示例中,您可以這樣做:

var title = @JS.Encode(Model.Title);

注意我怎么不把引號放在它周圍。如果標(biāo)題已經(jīng)包含引號,它不會爆炸。似乎也能很好地處理字典和匿名對象!


查看完整回答
反對 回復(fù) 2019-06-21
  • 3 回答
  • 0 關(guān)注
  • 1025 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號