我有一个公开属性的自定义控件。当我使用固定值设置它时,一切正常。但如果我尝试使用<%=%>设置其值标签,它有点令人讨厌:
<cc:CustomControl ID="CustomControl" runat="server" Property1='<%= MyProperty %>' />
<%= MyProperty %>
当渲染时,&lt;%= MyProperty%&gt;标签underneat自定义控件按照我的预期呈现(使用MyProperty的值)。但是,当我进入CustomControl的Render函数时,Property1的值实际上是字符串“&lt;%= MyProperty%&gt;”而不是MyProperty的实际潜在价值。
答案 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中查看是否有效。