我正在添加几个控件作为我开发的另一个自定义控件的子控件。这是我添加子控件(自定义标签和通用跨度控件)的位置:
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 标记中没有出现任何内容)。有什么想法吗?