我添加了一些控件作爲我開發的另一個自定義控件的子控件。此處,我添加子控件(自定義標籤和一個通用的控制範圍):自定義控件的子控件無法正確呈現
public static void AddLabel(this IExtendedControl control, string inheritableCssClass = "")
{
TestCLabel contentLabel = new TestCLabel();
contentLabel.Text = control.LabelText;
control.Controls.Add(contentLabel);
if (control.Required)
{
HtmlGenericControl requiredFieldIndicator = new HtmlGenericControl("span");
requiredFieldIndicator.Attributes["class"] = "requiredFieldIndicator";
requiredFieldIndicator.InnerText = " *";
control.Controls.Add(requiredFieldIndicator);
}
和我然後做父控件的繪製方法如下:
protected override void Render(HtmlTextWriter w)
{
base.Render(w);
foreach (Control c in this.Controls)
{
c.RenderControl(w);
}
if (Required)
{
rfv.RenderControl(w);
}
}
,但我得到錯誤'具有相同密鑰的條目已經存在'。這是由於嘗試手動呈現子控件造成的。我不認爲我需要做手動渲染,但是在我編寫控件之前沒有出現(HTML標記中沒有出現任何內容)。任何想法發生了什麼?
您的問題可能源於您在'base.Render()'提供了可能導致重複鍵問題的控件後重新呈現所有子控件的事實。在生命週期的哪個階段,您是否動態地添加控件? –