<%=%>之前的ASP.NET自定义控件渲染代码执行以填充属性

时间:2008-10-22 15:56:54

标签: asp.net custom-server-controls

我有一个公开属性的自定义控件。当我使用固定值设置它时,一切正常。但如果我尝试使用<%=%>设置其值标签,它有点令人讨厌:

<cc:CustomControl ID="CustomControl" runat="server" Property1='<%= MyProperty %>' />
<%= MyProperty %>

当渲染时,&lt;%= MyProperty%&gt;标签underneat自定义控件按照我的预期呈现(使用MyProperty的值)。但是,当我进入CustomControl的Render函数时,Property1的值实际上是字符串“&lt;%= MyProperty%&gt;”而不是MyProperty的实际潜在价值。

2 个答案:

答案 0 :(得分:3)

您的控件是在OnInit期间从标记初始化的。因此,如果该语法有效,则无论如何都不会产生您想要的效果,因为MyProperty将在OnInit期间进行评估,而不是在渲染时进行评估(就像第二次使用时一样)。

您想要使用数据绑定语法:

<cc:CustomControl ID="CustomControl" runat="server" Property1='<%# MyProperty %>' />

只需确保在容器上调用DataBind()(Page,UserControl等)。

或者,您可以在代码中设置属性:

CustomControl.Property1 = MyProperty;

答案 1 :(得分:1)

尝试&lt;%#MyProperty%&gt;在CustomControl中查看是否有效。