Главные страницы Google Adword и asp.net - PullRequest
2 голосов
/ 22 февраля 2011

Я пытаюсь добавить скрипт преобразования кода Google Adword на некоторые страницы aspx на нашем сайте, но у меня возникла проблема с сайтом, использующим главные страницы.В инструкции Google говорится, что код должен быть размещен перед тегом body, но с использованием главных страниц код будет на всех страницах, использующих главную страницу.Я хотел бы настроить его так, чтобы на некоторых страницах использовались индивидуальные коды преобразования, а на других ничего не использовалось.Любые предложения или примеры будут оценены.Также я использую C #.

Jamal

1 Ответ

1 голос
/ 22 февраля 2011

Существует множество различных способов взаимодействия с элементами управления на главных страницах отдельных страниц.Один из них - создать несколько простых пользовательских элементов управления и использовать тот же шаблон, который используется в .NET с элементами управления ScriptManager / ScriptManagerProxy.По сути, вы можете поместить элемент управления ScriptManager на главную страницу с настройками по умолчанию, а затем, если вам нужно переопределить значения по умолчанию на странице, вы используете элемент управления ScriptManagerProxy.

Я действительно не знаю всего, что связано сКод преобразования AdWords, но вы можете создать пользовательские элементы управления примерно так:

AdwordConversionControl:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SATest
{
    [DefaultProperty("ConversionCode")]
    [ToolboxData("<{0}:AdwordConversion runat=server></{0}:AdwordConversion>")]
    public class AdwordConversion : Control
    {
        private const string _conversionCodeKey = "cc";
        private const string _includeScriptKey  = "ic";

        [Category("Behavior")]
        [DefaultValue("")]
        public string ConversionCode
        {
            get { return (String)(ViewState[_conversionCodeKey] ?? "" ); }
            set { ViewState[_conversionCodeKey] = value; }
        }

        [Category("Behavior")]
        [DefaultValue(false)]
        public bool IncludeScript
        {
            get { return (bool)(ViewState[_includeScriptKey] ?? false ); }
            set { ViewState[_includeScriptKey] = value; }
        }


        protected override void Render(HtmlTextWriter writer)
        {
            if ( !IncludeScript ) { return; }

            string js = "<script type=\"text/javascript\">...Insert conversion code here: var code = " + ConversionCode + ";</script>";

            writer.Write( js );
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if ( Page.Items.Contains( typeof(AdwordConversion) ) ) 
            {
                throw new ApplicationException( "There can be only one AdwordConversion control defined on a page.  Use AdwordConversionProxy." );
            }

            Page.Items[typeof(AdwordConversion)] = this;
        }
    }
}

Элемент управления AdwordConversionProxy:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace SATest
{
    [DefaultProperty("ConversionCode")]
    [ToolboxData("<{0}:AdwordConversionProxy runat=server></{0}:AdwordConversionProxy>")]
    public class AdwordConversionProxy : Control
    {
        private string _conversionCode;
        private bool?  _includeScript;

        public string ConversionCode
        {
            get { return _conversionCode; }
            set { _conversionCode = value; }
        }

        public bool IncludeScript
        {
            get { return ( _includeScript.HasValue ) ? _includeScript.Value : false; }
            set { _includeScript = value; }
        }


        protected override void Render(HtmlTextWriter writer)
        {
        }

        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            AdwordConversion current = Page.Items[typeof(AdwordConversion)] as AdwordConversion;

            if ( current == null )
            {
                throw new ApplicationException( "AdwordConversionProxy requires that an AdwordConversion control already exist on a page." );
            }

            if ( _conversionCode != null )
            {
                current.ConversionCode = _conversionCode;
            }

            if ( _includeScript.HasValue )
            {
                current.IncludeScript = _includeScript.Value;
            }
        }
    }
}

Тогда вы просто добавитеЭлемент управления AdwordConversion на главной странице со значениями по умолчанию, и вы должны разместить элементы управления AdwordConversionProxy на отдельных страницах, для которых требовались их собственные настройки.

...