插入代码块到每个aspx页面

本文关键字:aspx 页面 代码 插入 | 更新日期: 2023-09-27 18:10:37

我有一个运行。net 4.0的web应用程序项目。我有很多。aspx页面,现在我想在所有的。aspx页面头添加一个脚本代码块,例如谷歌分析。

我知道有一个解决方案是在每一个页面添加,但我想知道是否有其他的方法来做到这一点,而不是修改每一个。aspx页面?

*My header not runat server

我有一个想法,但不确定它是否工作。

  • 在Global.asax
  • 中获取页面类
  • 从页面类中获取输出流
  • 在HTML头中插入Google Analytics代码

我找不到Page。全球响应。正如我在Application_PostRequestHandlerExecute &也Application_EndRequest。有人知道这是有效的吗?它是如何工作的?

谢谢。

插入代码块到每个aspx页面

使用母版页这是ASP。

我们所有的aspx页面代码后台类都继承自相同的基类,这允许我们使用单个控制点将标准的客户端元素(控件,脚本等)注入每个页面。

我们的设计是在母版页出现之前实现的,但是虽然它可能被转换为母版页设计,但我们发现这种实现非常灵活,并且能够响应不断变化的需求。

例如,我们有两个完全独立的应用程序设计(不同的皮肤,一些不同的行为),它们基于相同的代码库和页面集。我们能够通过简单修改基类来动态地交换横幅和其他UI和脚本元素,从而无需复制每个页面。

不幸的是,如果您希望脚本位于head元素中,则需要确保它们都被标记为runat=server。

我们的基类本身继承自Page,所以它可以拦截页面的所有事件,并对它们进行操作,而不是对继承类进行操作(我们实际上有内部可重写的方法,继承者应该使用这些方法来代替页面事件,以确保执行顺序)。

这是我们的(VB)代码,用于向页头添加脚本(在Page的LoadComplete方法中):

    ' sbscript is a stringbuilder that contains all of the javascript we want to place in the header
    Me.Page.Header.Controls.Add(New LiteralControl(sbScript.ToString))

如果不可能将头部更改为运行服务器,您可以查看ClientScriptManager方法RegisterClientScriptBlock,该方法将脚本放在页面的顶部。

您可以使用自定义代码(如Google analytics)创建一个带有标题的基本页面,并从该页面继承其他页面。它将促进两件事:1)如果你想改变自定义代码,你只需要在一个地方做2)没有重复的代码,因此更易于维护

我正试图在我们试图退役的遗留应用程序上做同样的事情。我需要在所有旧页面上显示一个弹出窗口,以提醒用户更新他们的书签以使用新站点,而不强迫他们停止使用遗留站点(目前)。这是不值得的时间转换网站运行在一个母版页上,当我可以在一个弹出脚本,因为这整个事情很快就会退役。新的主站点使用了一个母版页面,这显然简化了那里的事情。

我在一个文件中有这一行,其中有一些不同的常量。

Public Shared ReadOnly RetirementNagScript As String = "<Script Language='javascript'> alert('[app name] is being retired and will be shut down [in the near future]. Please update your bookmarks and references to the following URL: [some URL]'); </script>"

然后我将它插入到全局。asax, in Application_PostAcquireRequestState:

Response.Write(Globals.RetirementNagScript)

希望这对你有用;我仍然需要能够以这种方式向用户呈现一个可点击的URL,在遗留站点的每个页面上,JS警报不能为我做这件事。