asp.net - ASP.NET 代码块何时在页面生命周期中执行,例如 <%= %>?

标签 asp.net page-lifecycle

当我对整个页面进行数据绑定(bind)时,我将执行以下操作:

呸呸呸……

<%# SomeProperty == "GoodBye" ? "See you later" : "Hello" %>

而且效果很好。但是,我通常不会对整个页面使用数据绑定(bind),而是以“经典”ASP.NET 方式编写内容。例如,在后面的代码中,我会有类似的内容:
lblSomeMessage.Text = SomeProperty == "GoodBye" ? "See you later" : "Hello";

然后 .aspx 会有
<asp:label runat="server" id="lblSomeMessage"/>

但我想做的都是……有点。我想做的不是使用数据绑定(bind)语法,而是使用代码块:
<%= SomeProperty == "GoodBye" ? "See you later" : "Hello" %>
^^^^

没有输出标签语法。现在的问题是,这个标签什么时候会被实际评估?假设我在 OnPreRender 事件之前不设置 SomeProperty 属性。是不是太晚了?在我的测试中,我实际上是这样做的:
<%= SomeProperty == "GoodBye" ? + new System.Diagnostics.StackTrace().ToString() : "OH NO!" %>

并根据堆栈跟踪:

ASP.webform1_aspx.__Renderform1(HtmlTextWriter __w, Control parameterContainer) at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) at System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer)...



它发生在渲染期间,这是完美的。但这能保证吗?这条规则有什么陷阱吗?

最佳答案

是的,保证是Render .

“嵌入式代码块是在页面呈现阶段执行的服务器代码。” - http://msdn.microsoft.com/en-us/library/ms178135.aspx

关于asp.net - ASP.NET 代码块何时在页面生命周期中执行,例如 <%= %>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7251330/

相关文章:

.net - 在 ASP.Net MVC v1 下,是否调用了 Page_Load?

c# - 防止一次运行多个计划任务/一次只运行一个(在其他运行时暂停)

asp.net - ASP.NET 页面创建上的事件序列

asp.net - 将异常转换为 Application_Error 中的 HTTP 404 响应

c# - TinyMCE 编辑器 : A potentially dangerous Request. 从客户端检测到表单值

.net - 回发后 View 状态不会持续存在

c# - 回发后 ViewState 变量重置

ASP.NET 页面事件 - GridView 绑定(bind)后出现按钮单击事件

asp.net - 无法启动网站 IIS HRESULT : 0x80070020)

c# - JSON 中的 23,908 个对象 我尝试在将属性添加到 SQL 数据库之前将它们添加到属性中