在ASP.NET网站应用程序中放置Google Analytics代码的位置

3

我想在我的ASP.NET Web应用程序中找到一个放置Google Analytics代码的位置。我希望只有放置一次,而不需要复制并粘贴到多个文件中。有没有一个地方可以注入它,以便只需包含一次,所有页面都会收到影响?不幸的是,我没有使用MasterPages。


你为什么不能使用主页? - Greg B
是的。我无法介绍那么多的测试影响。 - Brian David Berman
6个回答

3

您需要一个基础页面,或者在每个需要该脚本的页面上放置一个自定义控件。

在这两种情况下,您可以订阅Init事件,然后执行以下操作:

protected override void OnInit(EventArgs e)
    {
        var myAnalyticsScript = @"<insert_analytics_script_here>";
        this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "analyticScript", myAnalyticsScript);
    }

如果您选择基础页面,您可以通过不继承基础页面来控制脚本出现在哪些页面上。如果您选择一个控件,您可以通过不将该控件放置在页面上来实现相同的效果。

谢谢这个 :) 有一件事:使用RegisterStartupScript将脚本放置在闭合的</form>标记之前。 - IrishChieftain

3
创建一个继承自Page类的基础页面,并将其插入到 head 中。然后让所有其他页面都继承自基础页面 :-)

1
创建基础页面并在其中添加 Google Analytics。然后从此页继承每个新页面。
例如:
class PageWithGoogleAnalytics : Page
{
    //some actual code to add analytics
}

class MyCustomPage : PageWithGoogleAnalytics {}

1

另一个建议,虽然这是一种极端的hack方法,但您可以编写一个HttpModule,在ASP.NET生成HTML之后但在IIS将请求发送到浏览器之前自动将其注入页面中。

注意:我真的不建议这个选项,但这可能是您唯一的选择。


0

你可以将它放入一个页面中,然后在任何需要检查的地方包含这个页面。但是母版页是最好的选择。


-3

--- 更新 ---

在您的 app_code 中添加以下类:


public class WebsitePageBase : System.Web.UI.Page
{
    public const string analyticsCode = "您的脚本放在这里..."
    protected void Page_Load(Object sender, e as EventArgs)
    {
       ClientScript.RegisterStartupScript(Me.GetType(),"__analytics_script",analyticsCode )
    }
}

</code>
</pre>

<p>当您添加一个新的 aspx 页面时,您必须从新的基类继承,例如,如果您正在添加 default.aspx,则后端类应如下所示:</p>

<pre><code>
public partial class _default : WebsitePageBase
{

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接