Как использовать объекты в Razor, определенные в отдельном скрипте - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь использовать Razor для одного из моих видов, и мне трудно разобраться в нескольких вещах.

@{
if (Model != null)
{
    <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
    <script>
           var bbbGoogleAdsData = @Html.Raw(Model.SerializeToString());
    </script>
    <script>
        window.googletag = window.googletag || { cmd: [] };
    googletag.cmd.push(function () {
        googletag.defineSlot('/21848388897/Development/Geo-Landing', [250, 250], [300, 300], "div-id-for-squaretile1")
            .addService(googletag.pubads())
            .setTargeting("pos", "1");
        googletag.pubads().enableSingleRequest();
        googletag.pubads().collapseEmptyDivs();
        googletag.pubads()
            .setTargeting('cityState', bbbGoogleAdsData.param.cityState)
            .setTargeting('country', bbbGoogleAdsData.param.country)
            .setTargeting('countyState', bbbGoogleAdsData.param.countyState)
            .setTargeting('orgType', bbbGoogleAdsData.param.orgType)
            .setTargeting('cleanSearchText', bbbGoogleAdsData.param.cleanSearchText)
            .setTargeting('culture', bbbGoogleAdsData.param.culture)
            .setTargeting('postalCode', bbbGoogleAdsData.param.postalCode)
            .setTargeting('channel',bbbGoogleAdsData.param.channel)
            .setTargeting('tobs', bbbGoogleAdsData.param.tob)
            .setTargeting('refURL',bbbGoogleAdsData.param.refUrl)
            .setTargeting('state', bbbGoogleAdsData.param.state);
        googletag.enableServices();
    });
    </script>
}

}

вывод на консоль:

<script>
               var bbbGoogleAdsData = {"param":{"cleanSearchText":[],"countyState":["suffolk-ma"],"orgType":[],"culture":["en-us"],"state":["ma"],"cityState":["boston-ma"],"country":["usa"],"postalCode":["02228"],"channel":["0021"],"tobs":[],"refUrl":[]},"adSlots":[{"path":"Geo-Landing","size":null,"id":"div-id-for-squaretile1","position":1}]};
        </script>
<script>
            window.googletag = window.googletag || { cmd: [] };
        googletag.cmd.push(function () {
            googletag.defineSlot('/21848388897/Development/Geo-Landing', [250, 250], [300, 300], "div-id-for-squaretile1")
                .addService(googletag.pubads())
                .setTargeting("pos", "1");
            googletag.pubads().enableSingleRequest();
            googletag.pubads().collapseEmptyDivs();
            googletag.pubads()
                .setTargeting('cityState', bbbGoogleAdsData.param.cityState)
                .setTargeting('country', bbbGoogleAdsData.param.country)
                .setTargeting('countyState', bbbGoogleAdsData.param.countyState)
                .setTargeting('orgType', bbbGoogleAdsData.param.orgType)
                .setTargeting('cleanSearchText', bbbGoogleAdsData.param.cleanSearchText)
                .setTargeting('culture', bbbGoogleAdsData.param.culture)
                .setTargeting('postalCode', bbbGoogleAdsData.param.postalCode)
                .setTargeting('channel',bbbGoogleAdsData.param.channel)
                .setTargeting('tobs', bbbGoogleAdsData.param.tob)
                .setTargeting('refURL',bbbGoogleAdsData.param.refUrl)
                .setTargeting('state', bbbGoogleAdsData.param.state);
            googletag.enableServices();
        });
        </script>

bbbGoogleAdsData - это объект типа:

enter image description here

Как использовать эти значения? мой вывод - просто текст bbbGoogleAdsData.param ...

Я делаю синтаксическую ошибку?

1 Ответ

0 голосов
/ 05 февраля 2020

Вот как мне удалось это сделать:

@{
    if (Model != null)
    {
        <script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js"></script>
        <script>
            window.googletag = window.googletag || { cmd: [] };
            googletag.cmd.push(function () {
            @foreach(var x in Model.AdSlots){
                <text>
                    googletag.defineSlot('@String.Format("/21848388897/Development/{0}", x.Path)', @x.Size.SerializeToString(),'@String.Format("{0}", x.Id)')
                        .addService(googletag.pubads())
                        .setTargeting("pos", "@String.Format("{0}", x.Position)");
                </text>
            }
                googletag.pubads().enableSingleRequest();
                googletag.pubads().collapseEmptyDivs();
                googletag.pubads()
                    .setTargeting('cityState', ['@String.Format("{0}", Model.Param.CityState)'])
                    .setTargeting('tobs', ['@String.Format("{0}", Model.Param.Tobs)'])
                    .setTargeting('refUrl', ['@String.Format("{0}", Model.Param.RefUrl)'])
                    .setTargeting('orgTypes', ['@String.Format("{0}", Model.Param.OrgType)'])
                    .setTargeting('cleanSearchText', ['@String.Format("{0}", Model.Param.CleanSearchText)'])
                    .setTargeting('country', ['@String.Format("{0}", Model.Param.Country)'])
                    .setTargeting('countyState', ['@String.Format("{0}", Model.Param.CountyState)'])
                    .setTargeting('culture', ['@String.Format("{0}", Model.Param.Culture)'])
                    .setTargeting('postalCode', ['@String.Format("{0}", Model.Param.PostalCode)'])
                    .setTargeting('channel',['@String.Format("{0}", Model.Param.Channel)'])
                    .setTargeting('state', ['@String.Format("{0}", Model.Param.State)']);
            googletag.enableServices();
            });
        </script>
    }
}
...