在父用户控件中访问子用户控件的属性

时间:2010-02-13 14:20:48

标签: asp.net user-controls properties public

我已将用户控件包含在另一个静态代码中:


将folowing指令放在父页面的asp代码中 用户控件:

<%@ Register src="Name_of_your_child_control.ascx" tagname="Name_of_your_child_control" tagprefix="uc1" %>

在父页面/控件的asp代码中使用以下标记:

<uc1:Name_of_your_child_control ID="Name_of_your_child_control1" runat="server" />

..... 但问题是......我无法访问在给定用户控件(父用户控件)中包含(用户控件)的用户控件的公共属性...

请帮助:(

4 个答案:

答案 0 :(得分:5)

说你的用户控制是这样的:

<%@ Control Inherits="Project.MyControl" Codebehind="MyControl.ascx.cs" %>
<asp:TextBox ID="TB" runat="server" />

您的控制代码隐藏:

namespace Project 
{
  public partial class MyControl : UserControl
  {
    public string MyTextProperty
    {
      get { return TB.Text; }
      set { TB.Text = value; }
    }
  }
}

在包含控件的父页面中,如下所示:

<%@ Register src="~/MyControl.ascx" tagname="MyControl" tagprefix="uc1" %>
<uc1:MyControl ID="MyControlID" runat="server" />

您可以在代码中使用该属性:

MyControlID.MyTextProperty = "bob";

答案 1 :(得分:0)

使用

Name_of_your_child_control1.PublicPropertyName

必须适用于您的父用户控件。

答案 2 :(得分:0)

检查您正在使用的路径和文件名,Anish。你有什么不对劲。 Visual Studio是否告诉您无法找到控件?它在编译时失败了吗?运行

答案 3 :(得分:0)

这很有趣,但无论何时向用户控件添加属性。

您需要在父级中重新注册。所以在你的情况下,

在此行的末尾添加一个空格并再次将其删除: $<% Register src="~/MyControl.ascx" tagname="MyControl" tagprefix="uc1" %>

这将重新注册用户控件,您将能够访问新属性。