在我的ASP.net项目的global.asax
文件中,我正在检查某些条件。当满足这些条件时,我想在页面运行时自动执行javascript代码。
这是我的代码:
如果条件那么
Response.Write(“< script type =”“text / javascript”“>”)
Response.Write(“// Javascript代码做东西”)
Response.Write(“< / script>”)
结束如果
虽然这似乎有助于执行Javascript代码,但我认为这不是最佳做法,因为此代码将在所有加载页面的HTML之前。
在我的页面加载时,以编程方式处理一些额外的Javascript代码的最佳方法是什么?
更新感谢您的回答。太糟糕了,这个解决方案无法在global.asax
内起作用。有没有办法在整个网站范围内实现这一目标?似乎global.asax
是放置与每个页面一起运行的代码的合理位置...... Response.Write
在global.asax
中正常工作。
答案 0 :(得分:7)
要从服务器控件或页面正确管理脚本的放置,您应该使用ClientScriptManager.RegisterStartupScript()
如果您在网站中使用ajax控件,也可以在ScriptManager中使用等效方法:ScriptManager.RegisterStartupScript
这些方法负责在文档加载完成后在适当的位置输出脚本。发布的链接有一些很好的例子可供使用。
请注意,您将无法直接从global.asax使用这些方法,因为它没有引用当前页面。 Global.asax用于将事件挂钩到HttpApplication管道,并且与实际的HttpHandler(例如Page对象)分离。为了保持UI的分离,你最好在你的母版页或一些基页类中进行检查,然后从那里输出脚本。
答案 1 :(得分:1)
ps:每次有同步或异步回发时,都会触发此事件
答案 2 :(得分:1)
如果您想在每个页面上进行此操作,请将其放在您的母版页上(如果有的话)。
如果没有,您可以创建一个基本的Page类,它继承自System.Web.UI.Page并扩展它以检查您的条件&渲染javascript。
然后在每个页面的代码隐藏中,继承您的基本页面类而不是System.Web.UI.Page
public partial class Orders : MyCode.BasePage