2008-10-22 102 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%>,看看是否有效。