设置用户控件的属性值 - C#

时间:2012-01-31 09:51:35

标签: c# asp.net .net webforms

我创建了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。我知道超级/次级分类是可能的,但这不是我所追求的!

1 个答案:

答案 0 :(得分:1)

您是否尝试过这样的事情(我希望您有意在运行时加载这些控件?):

TextBoxParameterUserControlic control = LoadControl("~/Parameters/TextBoxParameterUserControl.ascx") as TextBoxParameterUserControl;
if(control != null)
{
    control.LabelPrompt = "AAAA"; 
    PanelParametersList.Controls.Add(p);
}

当然,LabelPrompt属性必须为public