当我对整个页面进行数据绑定时,我会做这样的事情:
Blah等等......<%# SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
这是美丽的。但是,我经常不会对整个页面使用数据绑定,而是使用“clasic”ASP.NET方式编写内容。例如,在后面的代码中我会有类似的东西:
lblSomeMessage.Text = SomeProperty == "GoodBye" ? "See you later" : "Hello";
然后.aspx会有
<asp:label runat="server" id="lblSomeMessage"/>
但是我想要做什么两者 ...等等。我想做的不是使用数据绑定语法,而是使用代码块:
<%= SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
^^^^
Noe输出标签语法。现在,问题是,这个标签何时才会被评估?假设在OnPreRender事件之前我没有设置SomeProperty属性。这太晚了吗?在我的测试中,我实际上是这样做的:
<%= SomeProperty == "GoodBye" ? + new System.Diagnostics.StackTrace().ToString() : "OH NO!" %>
根据stacktrace:
ASP.webform1_aspx .__ Renderform1(HtmlTextWriter __w,Control parameterContainer)at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection孩子们) System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter的 作家)...
它在渲染过程中发生,这是完美的。但这有保证吗?这条规则有什么问题吗?
答案 0 :(得分:5)
是的,保证是Render
。
“嵌入式代码块是在页面呈现阶段执行的服务器代码。” - http://msdn.microsoft.com/en-us/library/ms178135.aspx