我想在我的ASP.NET Web应用程序中找到一个放置Google Analytics代码的位置。我希望只有放置一次,而不需要复制并粘贴到多个文件中。有没有一个地方可以注入它,以便只需包含一次,所有页面都会收到影响?不幸的是,我没有使用MasterPages。
我想在我的ASP.NET Web应用程序中找到一个放置Google Analytics代码的位置。我希望只有放置一次,而不需要复制并粘贴到多个文件中。有没有一个地方可以注入它,以便只需包含一次,所有页面都会收到影响?不幸的是,我没有使用MasterPages。
您需要一个基础页面,或者在每个需要该脚本的页面上放置一个自定义控件。
在这两种情况下,您可以订阅Init事件,然后执行以下操作:
protected override void OnInit(EventArgs e)
{
var myAnalyticsScript = @"<insert_analytics_script_here>";
this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "analyticScript", myAnalyticsScript);
}
class PageWithGoogleAnalytics : Page
{
//some actual code to add analytics
}
class MyCustomPage : PageWithGoogleAnalytics {}
另一个建议,虽然这是一种极端的hack方法,但您可以编写一个HttpModule,在ASP.NET生成HTML之后但在IIS将请求发送到浏览器之前自动将其注入页面中。
注意:我真的不建议这个选项,但这可能是您唯一的选择。
你可以将它放入一个页面中,然后在任何需要检查的地方包含这个页面。但是母版页是最好的选择。
--- 更新 ---
在您的 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
{
}