Response.Write和<%=%&gt ;?之间的实际区别是什么?

时间:2009-08-27 16:17:14

标签: asp.net page-lifecycle response.write

我遇到了第三方组件似乎在干扰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年第一季度版本的Telerik AjaxManager控件。升级到Q2控制解决了这个问题。

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

1 个答案:

答案 0 :(得分:6)

&lt;%=“foo”%&gt;变成了Response.Write(“foo”);一旦编译完毕。您可以通过挖掘ASP.NET Temporary Files文件夹并使用Reflector对您找到的dll进行反编译来验证这一点。