当我对整个页面进行数据绑定时,我会执行以下操作:
巴拉巴拉...
<%# SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
这效果很好。但是,我通常不会对整个页面使用数据绑定,而是以“经典”ASP.NET 方式编写内容。例如,在后面的代码中我将有类似的内容:
lblSomeMessage.Text = SomeProperty == "GoodBye" ? "See you later" : "Hello";
然后 .aspx 就会有
<asp:label runat="server" id="lblSomeMessage"/>
但我想做的both...有点。我想做的不是使用数据绑定语法,而是使用代码块:
<%= SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
^^^^
注意输出标签语法。现在的问题是,这个标签什么时候才会真正被评估?假设我在 OnPreRender 事件发生之前才设置 SomeProperty 属性。太晚了吗?在我的测试中我实际上是这样做的:
<%= SomeProperty == "GoodBye" ? + new System.Diagnostics.StackTrace().ToString() : "OH NO!" %>
根据堆栈跟踪:
ASP.webform1_aspx.__Renderform1(HtmlTextWriter __w, 控制
参数容器)位于
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter编写器,
ICollection 儿童)位于
System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter
作家)...
它发生在渲染期间,这是完美的。但这能保证吗?这条规则有什么陷阱吗?
是的,保证是Render
.
“嵌入式代码块是在页面渲染阶段执行的服务器代码。” -http://msdn.microsoft.com/en-us/library/ms178135.aspx http://msdn.microsoft.com/en-us/library/ms178135.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)