为什么调用page.RenderControl不会评估<% Response.Write("foo") %>
但它会评估<%= "bar" %>
?还有其他我应该打电话的吗?
我的印象是<%= %>
was shorthand for Response.Write
,因为它在经典ASP中。
... <p><%= "foo" %><% Response.Write("bar"); %></p> ...
渲染控制代码......
string output;
using (var mem = new StringWriter())
using (var writer = new XhtmlTextWriter(mem))
{
page.RenderControl(writer);
output = mem.GetStringBuilder().ToString();
}
...输出
Expected: "<p>foobar</p>"
Actual: "<p>foo</p>"
答案 0 :(得分:3)
&lt;%=%&gt;与asp.net中的Response.Write相同。这就是为什么&lt;%=“bar”%&gt;的工作原理。
在&lt;%Response.Write(“bar”)%&gt;结尾处缺少分号。这就是为什么它不起作用。
答案 1 :(得分:1)
我的问题与您的问题相同,我的解决方案只是使用<%=...%>
代替response.write();
个人认为原因看起来像早于response.write()
。一旦程序达到response.write()
函数,即使在服务器端标记中,RenderControl
对象也无法控制它。