【问题标题】:ASP.NET: Is it possible to inject CSS or Javascript into every page in my web app?ASP.NET:是否可以在我的 Web 应用程序的每个页面中注入 CSS 或 Javascript?
【发布时间】:2012-05-23 03:56:55
【问题描述】:

我正在开发一个使用框架集而不是母版页的 Web 应用程序。我想设置应用程序,以便每当我在本地使用生产连接字符串进行调试时,所有页面的背景颜色都是浅红色。

我在 StackOverflow 上遇到了一个问题,有人建议创建一个基本页面,所有页面都从该页面继承,但我需要一种动态方法,无需编辑应用程序中的每个页面类即可工作。此时不能切换到使用母版页。

有没有办法使用 global.asax 或其他方式将样式或脚本标记注入每个加载的文档的头部?

【问题讨论】:

  • 理论上是的,虽然我还没有看到有人努力尝试...
  • 我用一个实际可行的解决方案回答了我自己的问题。

标签: javascript asp.net css frameset inject


【解决方案1】:

呜呜呜!

Private Sub Global_asax_PreRequestHandlerExecute(sender As Object, e As System.EventArgs) Handles Me.PreRequestHandlerExecute

    Dim p As Page = TryCast(System.Web.HttpContext.Current.Handler, Page)

    If Not p Is Nothing Then p.ClientScript.RegisterStartupScript(p.GetType, Guid.NewGuid.ToString("n"), "document.body.style.backgroundColor = 'red';", True)

End Sub

关键是抓取页面引用,然后给它分配一个启动脚本,为body元素添加样式。基本上,一旦您知道如何获取对页面对象的引用,就没有限制了。当然,始终建议使用母版页进行基础开发,但如果您需要,这应该会为您提供一些快速而肮脏的功能。

【讨论】:

    【解决方案2】:

    我不久前发布了一个问题,询问如何强制所有页面从特定的基本页面继承。 答案对我来说来得太晚了,所以我从未尝试过,但查看this 帖子,有人说它应该可以工作。

    它指向的页面是:http://ryanfarley.com/blog/archive/2004/06/08/766.aspx

    【讨论】:

    • 不确定这是否有效。首先,我刚刚尝试过,它不起作用。其次,其他几个人说它只适用于没有代码隐藏的页面。为了测试这一点,我删除了我创建的测试页面的代码隐藏,然后它开始工作。我不认为这个 web.config 设置旨在覆盖页面的基类。
    • 啊,对不起!不过值得一试。认为它可能会有所帮助!希望你能找到答案!
    • 大约 15 分钟后我做了,并将其添加为这个问题的答案。
    猜你喜欢
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多