2008-10-22 107 views
2

我有一个自定义控件公开属性。当我使用固定值进行设置时,一切正常。但是,如果我尝试使用<%=%>标签来设置它的价值,它会有点古怪:在执行代码之前执行<%= %>代码执行ASP.NET自定义控件填充

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

当这个被渲染,underneat自定义控件<%= myProperty的%>标记呈现为我期望(用MyProperty的值)。但是,当我进入CustomControl的Render函数时,Property1的值实际上是字符串“<%= MyProperty%>”,而不是MyProperty的实际底层值。

回答

3

您控制的是在OnInit期间从标记中初始化的。因此,如果该语法起作用,它不会有你想要的效果,因为MyProperty将在OnInit期间评估,而不是在呈现时间(就像第二次使用时那样)。

您希望使用数据绑定语法来代替:

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

只要确保调用DataBind()容器(页,用户控件等)上。

或者,您也可以在后面的代码设置属性:

CustomControl.Property1 = MyProperty; 
+0

难道没有更好的答案呢?我一直使用MS控件的<%= MyProperty%>语法。不应该有自定义控件一样的方法。 – 2009-02-04 17:14:35

1

在CustomControl中尝试<%#MyProperty%>,看看是否有效。