我创建了4个或多或少具有相同属性的用户控件。以下是用户控件源代码的示例:
<div>
<asp:Label runat="server" ID="LabelPrompt"></asp:Label>
<telerik:RadComboBox runat="server" ID="ComboBoxInput"></telerik:RadComboBox>
</div>
当页面加载时,我需要更改LabelPrompt的值。这就是我在做的事情:
Control p = LoadControl("~/Parameters/TextBoxParameterUserControl.ascx");
p.GetType().GetProperty("LabelPrompt").SetValue(p, "AAAA", null);
PanelParametersList.Controls.Add(p);
以前我尝试使用下面的代码添加用户控件但它不起作用。另一个线程建议我使用上面的代码,它可以工作(在向视图添加控件方面)。
PanelParametersList.Controls.Add(new TextBoxParameterUserControl());
无论如何,编译器会在以下行抱怨:
p.GetType().GetProperty("LabelPrompt").SetValue(p, "AAAA", null);
但这不起作用,它说'对象没有设置参考'.....我做错了什么?
P.S。我知道超级/次级分类是可能的,但这不是我所追求的!
答案 0 :(得分:1)
您是否尝试过这样的事情(我希望您有意在运行时加载这些控件?):
TextBoxParameterUserControlic control = LoadControl("~/Parameters/TextBoxParameterUserControl.ascx") as TextBoxParameterUserControl;
if(control != null)
{
control.LabelPrompt = "AAAA";
PanelParametersList.Controls.Add(p);
}
当然,LabelPrompt
属性必须为public
。