ASP.NET无法在代码隐藏文件中访问用户控件的属性

时间:2013-03-18 13:02:51

标签: asp.net user-controls code-behind

Visual Studio 2008,C#,ASP.NET

需要以编程方式创建Web用户控件的多个副本(或实例)。

我有UserControlFile.ascx,其中包含 asp:标签,ID =" vhLabel "在里面。 在该文件中,我像往常一样通过公共字符串 vhText 变量设置标签的Text属性:

public string vhText
{
    set
    {
        vhLabel.Text = value;
    }
}

此文件中还有一些div和其他html数据无法以编程方式在C#中创建,因此我必须使用ascx文件。

现在,在代码隐藏文件中,我需要:

  1. 多次克隆此用户控件;
  2. 为标签的属性设置唯一值"文字"每个克隆通过" vhText"变量
  3. 请分享您对这些问题的建议。如果您需要,我可以在这里显示我的代码。 我一直在寻找答案,但仍然不成功。

2 个答案:

答案 0 :(得分:0)

您需要使用LoadControl方法:

MyUserControl control = (MyUserControl)Page.LoadControl("~/UserControlFile.ascx");
control.vhText = "first control";
Page.Controls.Add(control);

control = (MyUserControl)Page.LoadControl("~/UserControlFile.ascx");
control.vhText = "second control";
Page.Controls.Add(control);

control = (MyUserControl)Page.LoadControl("~/UserControlFile.ascx");
control.vhText = "third control";
Page.Controls.Add(control);

答案 1 :(得分:0)

您可以在此处找到有关如何以编程方式向页面添加用户控件的演练:http://msdn.microsoft.com/en-us/library/c0az2h86(v=vs.100).aspx

在您的情况下,UserControlFile.ascx控件中需要这样的内容(className属性是重要的一点):

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UserControlFile.ascx.cs" Inherits="UserControlFile" className="MyUserControl" %>
<asp:Label ID="vhLabel" runat="server"></asp:Label>

然后,在页面顶部将包含控件(更改适合您结构的文件路径):

<%@ Reference Control="~/Controls/UserControlFile.ascx" %>

最后,页面后面的代码将包含通过LoadControl方法以编程方式添加控件实例的代码以及MyUserControl类型的使用 - 在{{1}中定义上面的@Control指令中的}属性:

className

那应该指出你正确的方向......