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

Posted

技术标签:

【中文标题】在父用户控件中访问子用户控件的属性【英文标题】:Access child user control's property in parent user control 【发布时间】:2011-01-16 12:02:16 【问题描述】:

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


将以下指令放在父页面的 asp 代码中或 用户控制:

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

在父页面/控件的asp-code中使用以下标签:

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

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

请帮忙:(

【问题讨论】:

【参考方案1】:

使用

Name_of_your_child_control1.PublicPropertyName

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

【讨论】:

【参考方案2】:

假设你的用户控件是这样的:

<%@ 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";

【讨论】:

但是......对我来说它即将到来,因为我无法访问该属性:( @Anish - 如果你引用它就好像它在那里并编译,你会得到什么错误? 你的父页面也是用户控件吗?父页面 uc1 uc2 @Anish - 您想从父控件的代码隐藏,还是从包含父控件的页面的代码隐藏访问属性? 我有 2 个用户控件:uc1 和 uc2 还有一个父页面 p1。我在 p1 中包含了 uc1。现在我需要在 uc1 中包含 uc2 ...并在 uc1 中访问 uc2 属性【参考方案3】:

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

【讨论】:

【参考方案4】:

这很有趣,但是每当您向用户控件添加属性时。

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

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

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

【讨论】:

以上是关于在父用户控件中访问子用户控件的属性的主要内容,如果未能解决你的问题,请参考以下文章

C# 使用表单加载其他用户控件并访问基本控件或属性

WPF的用户控件怎么访问主窗体的控件

在 WPF C# 中无法访问用户控件的自定义属性

如何在winforms设计器中公开用户控件的整个子控件

无法访问用户控件上的公共属性wpf c#

单击父窗体时不会触发访问 VBA 子窗体事件