gpt4 book ai didi

.net - 替代 ASP.NET 中的 Page_Load(以及一个很好的 WTF 故事)

转载 作者:太空狗 更新时间:2023-10-29 15:52:45 25 4
gpt4 key购买 nike

Woo,我有一个问题(甚至可能是 Daily WTF 的问题),我希望有一个解决方案。 (我很抱歉发了这么长的帖子……)

我一直在处理大约一个月前继承的网站。我一直在努力的部分之一是修复其中一个控件(本质上是一个动态标题栏),以便它显示我的用户请求的附加信息。作为执行此项目的一部分,我创建了一个 Site.master 文件,这样我就不必将标题栏重新编码到每个页面中。当我第一次开始这样做时,它似乎工作得很好。我开发的所有页面看起来都很棒,栏也更新了,因为它应该显示信息。

好吧,当我将 Site.master(和这个控件)放入旧站点页面(我没有专门开发的页面)时,我注意到其中一些看起来很糟糕,但不是全部。当我说它看起来很糟糕时,基本上,控件会将自身左对齐到页面而不是居中。我花了几个小时调试无济于事——CSS 看起来正确,HTML 看起来没问题,我在 Javascript 中没有看到任何东西(尽管我确实遗漏了一些东西,稍后我会指出),甚至旧代码看起来是正确的(尽其所能——它写得不是很好)。另一位同事查看了该网站,一开始也找不到任何东西。

直到我只是想查看页面呈现的源代码(到目前为止,我一直在 IE8 中的开发人员 View 中工作)才清楚出了什么问题。

原始开发人员在许多页面上执行搜索。为此,他在数据库中查询所有数据,然后将它们加载到页面内的 Javascript 数组中,以便他可以访问它们。这本身就是一个大问题,因为我们正在谈论数以千计的项目,而且它显然不可扩展(而且,是的,网站速度很慢)。然而,它最终解决了搞砸 Site.master 的问题——当他将数据加载到 Javascript 数组中时,他在 Page_Load 时使用大量 Response.Write(string) 调用将数据写入 HTML。 WTF(让我感到困惑的是)他在 DOCTYPE 之前插入 Javascript 导致 IE 进入怪癖模式!

所以,因为我至少需要发布这个版本(我稍后会解决真正的问题),所以我在想:有没有办法可以强制将这个 Javascript 插入到 HTML 的其他地方——在 DOCTYPE 之后至少?现在,所有 Response.Write() 调用都在 Page_Load 方法中完成。我只需要稍后插入它们。

最佳答案

有很多方法可以做到这一点,“正确”的方法很可能是构建字符串,然后使用 Page.ClientScript.RegisterClientScriptBlock注册JS的方法,这将把它放在正确的地方

另一种更快速、更肮脏的方法是向页面添加一个控件,而不是 response.write,而是构建 JS,然后设置文本控件的文本属性。

关于.net - 替代 ASP.NET 中的 Page_Load(以及一个很好的 WTF 故事),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2425867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com