3

我遇到了一个问题,第三方组件似乎干扰Response.Write并导致其中的任何内容在Response.Write("")任何其他 html 之前呈现。例如:

<html><head><title><% Response.Write("HELLO WORLD") %>

将呈现为

HELLO WORLD<html><head>...

<%= %>但是,使用块渲染的任何内容都可以正常工作。以下代码将完美运行:

<html><head><title><%="HELLO WORLD"%>

我一直认为这<%=只是Response.Write. 根据我在 MSDN 上找到的内容,我现在了解到它<%=最终转换为 Response.Write,但显然中间有几个步骤。

有没有人猜测为什么这两者会呈现不同的效果,或者向我指出一些解释如何<%= %>处理块的文档/信息?

更新:导致问题的控件是 2009 Q1 版本中的 Telerik AjaxManager 控件。升级到 Q2 控制解决了这个问题。

不幸的是,我无法访问源代码,所以我无法弄清楚为什么控件会导致这种行为。这个问题已经解决了,但我仍然很好奇它为什么存在。

4

1 回答 1

6

<%= "foo" %> 变成 Response.Write("foo"); 一旦编译。您可以通过挖掘 ASP.NET 临时文件文件夹并使用 Reflector 反编译您找到的 dll 来验证这一点。

于 2009-08-27T20:49:36.220 回答