gpt4 book ai didi

c# - Google Adword 和 asp.net 母版页

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:05 26 4
gpt4 key购买 nike

我正在尝试将 Google Adword 转换代码脚本添加到我们网站的某些 aspx 页面,但我在使用母版页的网站上遇到了问题。谷歌指令说将代码放在 body 标签之前,但使用母版页时,代码将出现在使用母版页的所有页面上。我想在某些页面使用单独的转换代码而其他页面不使用任何内容的情况下进行设置。任何建议或例子将不胜感激。另外,我正在使用 C#。

贾马尔

最佳答案

有许多不同的方法可以从各个页面与母版页上的控件进行通信。其中之一是创建一些简单的自定义控件并使用 .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 控件放置在需要自己设置的各个页面上。

关于c# - Google Adword 和 asp.net 母版页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5079380/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com