在自定義服務器控件中,我只是寫出了子控件的數量。自定義控件的Controls.Count零
如果在控件標籤的主體內使用<%%>標籤,是否有計數會變爲零的原因?
這是我極爲簡化的控制:
public class Script : Control
{
public override void RenderControl(HtmlTextWriter writer)
{
writer.Write(this.Controls.Count.ToString());
}
}
當傳遞只包含文字數據,寫入的次數爲1的預期:
<my:Script runat="server" ID="script3" >
function foo(){}
</my:Script>
當傳遞文字數據和部分計算數據,計數雲歸零:
<my:Script ID="Script1" runat="server" >
function foot(){}
<%=String.Empty %>
</my:Script>
String.Empty ei沒有什麼特別之處療法。我在這裏放的任何東西都會導致計數爲零。
有趣的是,其他控件標籤卻能正常工作。以下計數3:
<my:Script runat="server" ID="Script2">
hi
<asp:HyperLink runat="server" NavigateUrl="/" Text="hi" />
</my:Script>
是否有另一種方法來獲取自定義控件的子內容?我認爲有一些方法,因爲它,但我只能檢查System.Web.UI.WebControls.Content的元數據 - 而不是實現。
爲了以防萬一它有助於解決我的問題,我期待構建一個控件,它可以在我的視圖和局部視圖中累積javascript片段,並允許我一次性將它們全部轉儲到最終呈現頁面的底部(在內核之後庫已經加載)。 – 2010-01-07 21:52:41